|
|
@@ -5,6 +5,7 @@ import com.xunmei.common.core.constant.CacheConstants;
|
|
|
import com.xunmei.common.core.constant.Constants;
|
|
|
import com.xunmei.common.core.constant.SecurityConstants;
|
|
|
import com.xunmei.common.core.constant.SystemParameterConstant;
|
|
|
+import com.xunmei.common.core.text.Convert;
|
|
|
import com.xunmei.common.core.utils.DateUtils;
|
|
|
import com.xunmei.common.core.utils.JwtUtils;
|
|
|
import com.xunmei.common.core.utils.ServletUtils;
|
|
|
@@ -17,6 +18,7 @@ import com.xunmei.system.api.RemoteConfigService;
|
|
|
import com.xunmei.system.api.RemoteUserService;
|
|
|
import com.xunmei.system.api.domain.SysConfig;
|
|
|
import com.xunmei.system.api.model.LoginUser;
|
|
|
+import io.jsonwebtoken.Claims;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
@@ -152,9 +154,14 @@ public class TokenService {
|
|
|
LoginUser user = null;
|
|
|
try {
|
|
|
if (StringUtils.isNotEmpty(token)) {
|
|
|
- String userkey = JwtUtils.getUserKey(token);
|
|
|
- String userId = JwtUtils.getUserId(token);
|
|
|
- String platformType = JwtUtils.getPlatformType(token);
|
|
|
+// String userkey = JwtUtils.getUserKey(token);
|
|
|
+// String userId = JwtUtils.getUserId(token);
|
|
|
+// String platformType = JwtUtils.getPlatformType(token);
|
|
|
+ // 减少反序列化次数 提升效率
|
|
|
+ Claims claims = JwtUtils.parseToken(token);
|
|
|
+ String userkey = Convert.toStr(claims.get(SecurityConstants.USER_KEY), "");
|
|
|
+ String userId = Convert.toStr(claims.get(SecurityConstants.DETAILS_USER_ID), "");
|
|
|
+ String platformType = Convert.toStr(claims.get(SecurityConstants.PLATFORM_TYPE), "");
|
|
|
user = RedisUtils.getCacheObject(getTokenKey(userkey, userId, platformType));
|
|
|
}
|
|
|
return user;
|
|
|
@@ -182,6 +189,13 @@ public class TokenService {
|
|
|
String platformType = JwtUtils.getPlatformType(token);
|
|
|
//redisService.deleteObject(getTokenKey(userkey));
|
|
|
RedisUtils.deleteObject(getTokenKey(userkey, userId, platformType));
|
|
|
+ //清除个人相关缓存
|
|
|
+ String userName = JwtUtils.getUserName(token);
|
|
|
+ RedisUtils.deleteObject(CacheConstants.USER_CACHE_SINGLE_KEY+userName);
|
|
|
+ RedisUtils.deleteObject(CacheConstants.USER_CACHE_SINGLE_KEY+userId);
|
|
|
+ RedisUtils.deleteObject(CacheConstants.USER_CACHE_ROLE_ID_KEY+userId);
|
|
|
+ RedisUtils.deleteObject(CacheConstants.USER_CACHE_ROLE_OBJECT_KEY+userId);
|
|
|
+ RedisUtils.deleteObject(CacheConstants.USER_ROLE_PERMISSION_CACHE_KEY+userId);
|
|
|
}
|
|
|
}
|
|
|
|