From 0c9ff5198c54ec5d2f3bbb8c5a406d270df1e188 Mon Sep 17 00:00:00 2001 From: zhaoxiaohao <279049017@qq.com> Date: Thu, 11 Mar 2021 11:03:21 +0800 Subject: [PATCH] 优化token验证的流程 --- kidgrow-uaa/kidgrow-uaa-server/src/main/java/com/kidgrow/oauth2/controller/TokensController.java | 2 +- kidgrow-uaa/kidgrow-uaa-biz/src/main/java/com/kidgrow/oauth2/service/impl/RedisTokensServiceImpl.java | 28 +++++++++++++++++++++------- kidgrow-uaa/kidgrow-uaa-biz/src/main/java/com/kidgrow/oauth2/service/ITokensService.java | 5 +++++ 3 files changed, 27 insertions(+), 8 deletions(-) diff --git a/kidgrow-uaa/kidgrow-uaa-biz/src/main/java/com/kidgrow/oauth2/service/ITokensService.java b/kidgrow-uaa/kidgrow-uaa-biz/src/main/java/com/kidgrow/oauth2/service/ITokensService.java index d956ca9..446225b 100644 --- a/kidgrow-uaa/kidgrow-uaa-biz/src/main/java/com/kidgrow/oauth2/service/ITokensService.java +++ b/kidgrow-uaa/kidgrow-uaa-biz/src/main/java/com/kidgrow/oauth2/service/ITokensService.java @@ -22,5 +22,10 @@ */ PageResult<TokenVo> listTokens(Map<String, Object> params, String clientId); + /** + * 获取用户是否登录; + * @param map + * @return + */ ResultBody getBeforLogin(Map<String, Object> map); } diff --git a/kidgrow-uaa/kidgrow-uaa-biz/src/main/java/com/kidgrow/oauth2/service/impl/RedisTokensServiceImpl.java b/kidgrow-uaa/kidgrow-uaa-biz/src/main/java/com/kidgrow/oauth2/service/impl/RedisTokensServiceImpl.java index dc7af4f..893febb 100644 --- a/kidgrow-uaa/kidgrow-uaa-biz/src/main/java/com/kidgrow/oauth2/service/impl/RedisTokensServiceImpl.java +++ b/kidgrow-uaa/kidgrow-uaa-biz/src/main/java/com/kidgrow/oauth2/service/impl/RedisTokensServiceImpl.java @@ -6,21 +6,25 @@ import com.kidgrow.common.model.PageResult; import com.kidgrow.common.model.ResultBody; import com.kidgrow.common.utils.StringUtils; -import com.kidgrow.redis.template.RedisRepository; import com.kidgrow.oauth2.model.TokenVo; import com.kidgrow.oauth2.service.ITokensService; +import com.kidgrow.redis.template.RedisRepository; import com.kidgrow.redis.util.RedisUtils; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.MapUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.oauth2.common.DefaultOAuth2AccessToken; +import org.springframework.security.oauth2.common.OAuth2AccessToken; import org.springframework.security.oauth2.provider.OAuth2Authentication; import org.springframework.security.oauth2.provider.OAuth2Request; +import org.springframework.security.oauth2.provider.token.TokenStore; import org.springframework.stereotype.Service; import java.util.ArrayList; +import java.util.Collection; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; /** * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br> @@ -37,6 +41,8 @@ private RedisRepository redisRepository; @Autowired private RedisUtils redisUtils; + @Autowired + private TokenStore tokenStore; @Override public PageResult<TokenVo> listTokens(Map<String, Object> params, String clientId) { @@ -87,6 +93,11 @@ return result; } + /** + * 获取用户是否登录; + * @param map + * @return + */ @Override public ResultBody getBeforLogin(Map<String, Object> map) { String name = MapUtils.getString(map, "name"); @@ -97,13 +108,16 @@ if (StringUtils.isBlank(webApp)) { return ResultBody.failed("请输入应用id"); } - List<Object> objectList = redisUtils.lGet(SecurityConstants.REDIS_UNAME_TO_ACCESS+webApp+":"+name,0,0 - ); - if(objectList!=null){ - if (objectList.size()>0) { - return ResultBody.ok().data(false); - }else { + //获取token + Collection<OAuth2AccessToken> tokensByClientIdAndUserName = this.tokenStore.findTokensByClientIdAndUserName(webApp, name); + List<OAuth2AccessToken> collect = tokensByClientIdAndUserName.stream().collect(Collectors.toList()); +// 验证token + if(collect!=null){ + OAuth2AccessToken oAuth2AccessToken = collect.get(collect.size() - 1); + if(oAuth2AccessToken.isExpired()){ return ResultBody.ok().data(true); + }else { + return ResultBody.ok().data(false); } }else { return ResultBody.ok().data(true); diff --git a/kidgrow-uaa/kidgrow-uaa-server/src/main/java/com/kidgrow/oauth2/controller/TokensController.java b/kidgrow-uaa/kidgrow-uaa-server/src/main/java/com/kidgrow/oauth2/controller/TokensController.java index 57a8ea6..a773064 100644 --- a/kidgrow-uaa/kidgrow-uaa-server/src/main/java/com/kidgrow/oauth2/controller/TokensController.java +++ b/kidgrow-uaa/kidgrow-uaa-server/src/main/java/com/kidgrow/oauth2/controller/TokensController.java @@ -32,7 +32,7 @@ return tokensService.listTokens(params, tenantId); } /** - * 获取用户是否登录 + * 获取用户是否登录; * @param map * @return */ -- Gitblit v1.8.0