Browse Source

优化token过期检查

zhouhao 2 years ago
parent
commit
6814c83050

+ 12 - 0
hsweb-authorization/hsweb-authorization-api/src/main/java/org/hswebframework/web/authorization/token/LocalUserToken.java

@@ -74,9 +74,21 @@ public class LocalUserToken implements UserToken {
 
     @Override
     public TokenState getState() {
+        if (state == TokenState.normal) {
+            checkExpired();
+        }
         return state;
     }
 
+    @Override
+    public boolean checkExpired() {
+        if (UserToken.super.checkExpired()) {
+            setState(TokenState.expired);
+            return true;
+        }
+        return false;
+    }
+
     public void setState(TokenState state) {
         this.state = state;
     }

+ 12 - 5
hsweb-authorization/hsweb-authorization-api/src/main/java/org/hswebframework/web/authorization/token/redis/SimpleUserToken.java

@@ -35,18 +35,25 @@ public class SimpleUserToken implements UserToken {
 
     public static SimpleUserToken of(Map<String, Object> map) {
         Object authentication = map.get("authentication");
-        if(authentication instanceof Authentication){
+        if (authentication instanceof Authentication) {
             return FastBeanCopier.copy(map, new SimpleAuthenticationUserToken(((Authentication) authentication)));
         }
         return FastBeanCopier.copy(map, new SimpleUserToken());
     }
 
+    public TokenState getState() {
+        if (state == TokenState.normal) {
+            checkExpired();
+        }
+        return state;
+    }
+
     @Override
-    public boolean isNormal() {
-        if (checkExpired()) {
+    public boolean checkExpired() {
+        if (UserToken.super.checkExpired()) {
             setState(TokenState.expired);
-            return false;
+            return true;
         }
-        return UserToken.super.isNormal();
+        return false;
     }
 }