Browse Source

优化token申请逻辑

zhou-hao 7 years ago
parent
commit
da31b647d3

+ 5 - 0
hsweb-authorization/hsweb-authorization-oauth2/hsweb-authorization-oauth2-auth-server/src/main/java/org/hswebframework/web/authorization/oauth2/server/support/implicit/DefaultImplicitGranter.java

@@ -63,6 +63,11 @@ public class DefaultImplicitGranter extends AbstractAuthorizationService impleme
         accessToken.setOwnerId(client.getOwnerId());
         accessToken.setExpiresIn(3600);
         accessToken.setClientId(clientId);
+        OAuth2AccessToken old = accessTokenService.tryGetOldToken(accessToken);
+        //如果已存在token并且距离上次更新时间小于10秒
+        if(old!=null&&System.currentTimeMillis()-old.getUpdateTime()<10000){
+            return old;
+        }
         return accessTokenService.saveOrUpdateToken(accessToken);
     }
 }

+ 7 - 0
hsweb-authorization/hsweb-authorization-oauth2/hsweb-authorization-oauth2-auth-server/src/main/java/org/hswebframework/web/authorization/oauth2/server/support/password/DefaultPasswordGranter.java

@@ -68,6 +68,13 @@ public class DefaultPasswordGranter extends AbstractAuthorizationService impleme
         accessToken.setOwnerId(userId);
         accessToken.setExpiresIn(3600);
         accessToken.setClientId(client.getId());
+        OAuth2AccessToken old = accessTokenService.tryGetOldToken(accessToken);
+        //如果已存在token并且距离上次更新时间小于10秒
+        if(old!=null&&System.currentTimeMillis()-old.getUpdateTime()<10000){
+
+            return old;
+        }
+
         return accessTokenService.saveOrUpdateToken(accessToken);
     }
 }