|
@@ -5,6 +5,7 @@ import com.qmth.boot.core.security.model.AccessEntity;
|
|
|
import com.qmth.boot.core.security.service.AuthorizationService;
|
|
|
import com.qmth.boot.tools.signature.SignatureType;
|
|
|
import com.qmth.teachcloud.common.bean.auth.AuthBean;
|
|
|
+import com.qmth.teachcloud.common.config.DictionaryConfig;
|
|
|
import com.qmth.teachcloud.common.contant.SystemConstant;
|
|
|
import com.qmth.teachcloud.common.entity.SysUser;
|
|
|
import com.qmth.teachcloud.common.entity.TBSession;
|
|
@@ -35,6 +36,9 @@ public class TeachcloudReportAuthenticationService implements AuthorizationServi
|
|
|
@Resource
|
|
|
RedisUtil redisUtil;
|
|
|
|
|
|
+ @Resource
|
|
|
+ DictionaryConfig dictionaryConfig;
|
|
|
+
|
|
|
@Override
|
|
|
public AccessEntity findByIdentity(String identity, SignatureType signatureType, String path) {
|
|
|
return new TeachcloudReportSession(identity, SignatureType.TOKEN);
|
|
@@ -62,6 +66,17 @@ public class TeachcloudReportAuthenticationService implements AuthorizationServi
|
|
|
log.warn("Authorization faile: deviceId invalid, session deviceId is " + tbSession.getDeviceId());
|
|
|
throw ExceptionResultEnum.AUTHORIZATION_ERROR.exception();
|
|
|
}
|
|
|
+
|
|
|
+ Long expireTime = redisUtil.getUserSessionExpire(accessEntity.getIdentity());
|
|
|
+ if (Objects.nonNull(expireTime) && expireTime.longValue() > -1L) {
|
|
|
+ if (Objects.nonNull(tbSession.getLastAccessTime()) && (System.currentTimeMillis() - tbSession.getLastAccessTime()) / 1000 > dictionaryConfig.sysDomain().getSessionActive().getSeconds()) {
|
|
|
+ log.warn("Authorization faile: session active, session active is " + dictionaryConfig.sysDomain().getSessionActive().getSeconds());
|
|
|
+ throw ExceptionResultEnum.NOT_LOGIN.exception();
|
|
|
+ }
|
|
|
+ tbSession.setLastInfo();
|
|
|
+ redisUtil.setUserSession(accessEntity.getIdentity(), tbSession, expireTime);
|
|
|
+ }
|
|
|
+
|
|
|
List<String> privilegeUrl = cacheService.privilegeUrlCache(PrivilegePropertyEnum.NO_AUTH);
|
|
|
//无需鉴权的url
|
|
|
int noAuthCount = Objects.nonNull(privilegeUrl) ? (int) privilegeUrl.stream().filter(s -> s.equalsIgnoreCase(path)).count() : 0;
|