Forráskód Böngészése

拦截token过期 进行重新登录

yuhongqi 3 napja
szülő
commit
22fae1fde5

+ 27 - 13
fs-company/src/main/java/com/fs/framework/service/TokenService.java

@@ -66,22 +66,36 @@ public class TokenService
         String token = getToken(request);
         if (StringUtils.isNotEmpty(token))
         {
-            Claims claims = parseToken(token);
-            // 解析对应的权限以及用户信息
-            String uuid = (String) claims.get(Constants.COMPANY_LOGIN_USER_KEY);
-            String userKey = getTokenKey(uuid);
-            LoginUser user = redisCache.getCacheObject(userKey);
-            return validateLoginUser(user, request);
+            try
+            {
+                Claims claims = parseToken(token);
+                // 解析对应的权限以及用户信息
+                String uuid = (String) claims.get(Constants.COMPANY_LOGIN_USER_KEY);
+                String userKey = getTokenKey(uuid);
+                LoginUser user = redisCache.getCacheObject(userKey);
+                return validateLoginUser(user, request);
+            }
+            catch (Exception e)
+            {
+                // token 签名不匹配/过期/格式错误时按未登录处理,由认证入口返回 401
+            }
         }
-        token=getUrlToken(request);
+        token = getUrlToken(request);
         if (StringUtils.isNotEmpty(token))
         {
-            Claims claims = parseToken(token);
-            // 解析对应的权限以及用户信息
-            String uuid = (String) claims.get(Constants.COMPANY_LOGIN_USER_KEY);
-            String userKey = getTokenKey(uuid);
-            LoginUser user = redisCache.getCacheObject(userKey);
-            return validateLoginUser(user, request);
+            try
+            {
+                Claims claims = parseToken(token);
+                // 解析对应的权限以及用户信息
+                String uuid = (String) claims.get(Constants.COMPANY_LOGIN_USER_KEY);
+                String userKey = getTokenKey(uuid);
+                LoginUser user = redisCache.getCacheObject(userKey);
+                return validateLoginUser(user, request);
+            }
+            catch (Exception e)
+            {
+                // token 签名不匹配/过期/格式错误时按未登录处理,由认证入口返回 401
+            }
         }
 
         return null;