From 84584a7006c7cca28ecb769d084c3bc1f87b3f39 Mon Sep 17 00:00:00 2001 From: Penny <2500338766@qq.com> Date: Wed, 3 May 2023 15:18:41 +0800 Subject: [PATCH] =?UTF-8?q?feature-1.1=EF=BC=9A=E9=89=B4=E6=9D=83=E6=A0=A1?= =?UTF-8?q?=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../auth/controller/CreatorController.java | 4 +- .../auth/controller/FhUserController.java | 4 +- .../auth/controller/TiktokUserController.java | 4 +- .../auth/controller/WxUserController.java | 8 ++- .../security/auth/CreatorAuthLogic.java | 66 +++++++++++++++++++ .../common/security/auth/CreatorAuthUtil.java | 45 +++++++++++++ .../common/security/auth/FhAuthLogic.java | 64 ++++++++++++++++++ .../common/security/auth/FhAuthUtil.java | 45 +++++++++++++ .../common/security/auth/TiktokAuthLogic.java | 64 ++++++++++++++++++ .../common/security/auth/TiktokAuthUtil.java | 45 +++++++++++++ .../common/security/auth/WechatAuthLogic.java | 66 +++++++++++++++++++ .../common/security/auth/WechatAuthUtil.java | 45 +++++++++++++ .../interceptor/HeaderInterceptor.java | 34 +++++++++- .../security/service/CreatorTokenService.java | 41 ++++++++++++ .../security/service/FhUserTokenService.java | 41 ++++++++++++ .../service/TiktokUserTokenService.java | 44 ++++++++++++- .../security/service/WxUserTokenService.java | 48 ++++++++++++-- 17 files changed, 656 insertions(+), 12 deletions(-) create mode 100644 bnyer-common/bnyer-common-security/src/main/java/com/bnyer/common/security/auth/CreatorAuthLogic.java create mode 100644 bnyer-common/bnyer-common-security/src/main/java/com/bnyer/common/security/auth/CreatorAuthUtil.java create mode 100644 bnyer-common/bnyer-common-security/src/main/java/com/bnyer/common/security/auth/FhAuthLogic.java create mode 100644 bnyer-common/bnyer-common-security/src/main/java/com/bnyer/common/security/auth/FhAuthUtil.java create mode 100644 bnyer-common/bnyer-common-security/src/main/java/com/bnyer/common/security/auth/TiktokAuthLogic.java create mode 100644 bnyer-common/bnyer-common-security/src/main/java/com/bnyer/common/security/auth/TiktokAuthUtil.java create mode 100644 bnyer-common/bnyer-common-security/src/main/java/com/bnyer/common/security/auth/WechatAuthLogic.java create mode 100644 bnyer-common/bnyer-common-security/src/main/java/com/bnyer/common/security/auth/WechatAuthUtil.java diff --git a/bnyer-auth/src/main/java/com/bnyer/auth/controller/CreatorController.java b/bnyer-auth/src/main/java/com/bnyer/auth/controller/CreatorController.java index 0ae54c7..963296e 100644 --- a/bnyer-auth/src/main/java/com/bnyer/auth/controller/CreatorController.java +++ b/bnyer-auth/src/main/java/com/bnyer/auth/controller/CreatorController.java @@ -3,6 +3,7 @@ package com.bnyer.auth.controller; import com.bnyer.auth.service.CreatorLoginService; import com.bnyer.common.core.domain.R; import com.bnyer.common.core.dto.CreatorLoginDto; +import com.bnyer.common.security.auth.CreatorAuthUtil; import com.bnyer.common.security.service.CreatorTokenService; import com.bnyer.common.security.utils.SecurityUtils; import com.bnyer.img.api.model.LoginCreator; @@ -45,7 +46,8 @@ public class CreatorController public R logout(HttpServletRequest request) { String token = SecurityUtils.getCreatorToken(request); - creatorTokenService.delLoginCreator(token); + //creatorTokenService.delLoginCreator(token); + CreatorAuthUtil.logoutByToken(token); return R.ok(); } } diff --git a/bnyer-auth/src/main/java/com/bnyer/auth/controller/FhUserController.java b/bnyer-auth/src/main/java/com/bnyer/auth/controller/FhUserController.java index bee0b77..de4b691 100644 --- a/bnyer-auth/src/main/java/com/bnyer/auth/controller/FhUserController.java +++ b/bnyer-auth/src/main/java/com/bnyer/auth/controller/FhUserController.java @@ -3,6 +3,7 @@ package com.bnyer.auth.controller; import com.bnyer.auth.service.FhUserLoginService; import com.bnyer.common.core.domain.R; import com.bnyer.common.core.dto.FhLoginDto; +import com.bnyer.common.security.auth.FhAuthUtil; import com.bnyer.common.security.service.FhUserTokenService; import com.bnyer.common.security.utils.SecurityUtils; import com.bnyer.img.api.model.LoginFhUser; @@ -43,7 +44,8 @@ public class FhUserController { String token = SecurityUtils.getFhToken(request); //删除快手用户缓存 - fUserTokenService.delLoginFhUser(token); + //fUserTokenService.delLoginFhUser(token); + FhAuthUtil.logoutByToken(token); return R.ok(); } } diff --git a/bnyer-auth/src/main/java/com/bnyer/auth/controller/TiktokUserController.java b/bnyer-auth/src/main/java/com/bnyer/auth/controller/TiktokUserController.java index 76eea4b..f3e126a 100644 --- a/bnyer-auth/src/main/java/com/bnyer/auth/controller/TiktokUserController.java +++ b/bnyer-auth/src/main/java/com/bnyer/auth/controller/TiktokUserController.java @@ -3,6 +3,7 @@ package com.bnyer.auth.controller; import com.bnyer.auth.service.TiktokUserLoginService; import com.bnyer.common.core.domain.R; import com.bnyer.common.core.dto.TiktokLoginDto; +import com.bnyer.common.security.auth.TiktokAuthUtil; import com.bnyer.common.security.service.TiktokUserTokenService; import com.bnyer.common.security.utils.SecurityUtils; import com.bnyer.img.api.model.LoginTiktokUser; @@ -43,7 +44,8 @@ public class TiktokUserController { String token = SecurityUtils.getTiktokToken(request); //删除抖音用户缓存 - tiktokUserTokenService.delLoginFhUser(token); + //tiktokUserTokenService.delLoginTiktokUser(token); + TiktokAuthUtil.logoutByToken(token); return R.ok(); } } diff --git a/bnyer-auth/src/main/java/com/bnyer/auth/controller/WxUserController.java b/bnyer-auth/src/main/java/com/bnyer/auth/controller/WxUserController.java index 96dfecb..78e50b8 100644 --- a/bnyer-auth/src/main/java/com/bnyer/auth/controller/WxUserController.java +++ b/bnyer-auth/src/main/java/com/bnyer/auth/controller/WxUserController.java @@ -3,6 +3,7 @@ package com.bnyer.auth.controller; import com.bnyer.auth.service.WxUserLoginService; import com.bnyer.common.core.domain.R; import com.bnyer.common.core.dto.WxLoginDto; +import com.bnyer.common.security.auth.WechatAuthUtil; import com.bnyer.common.security.service.WxUserTokenService; import com.bnyer.common.security.utils.SecurityUtils; import com.bnyer.img.api.model.LoginWechatUser; @@ -28,13 +29,13 @@ public class WxUserController private WxUserLoginService wxUserLoginService; @Autowired - private WxUserTokenService WxUserTokenService; + private WxUserTokenService wxUserTokenService; @ApiOperation(value="微信小程序用户登录") @PostMapping(value = "/wxUserLogin") public R loginWx(@Validated @RequestBody @ApiParam("登录对象") WxLoginDto dto){ LoginWechatUser loginWxUser = wxUserLoginService.login(dto); - return R.ok(WxUserTokenService.createToken(loginWxUser)); + return R.ok(wxUserTokenService.createToken(loginWxUser)); } @PostMapping("/wxUserLogout") @@ -43,7 +44,8 @@ public class WxUserController { String token = SecurityUtils.getWechatToken(request); //删除微信用户缓存 - WxUserTokenService.delLoginFhUser(token); + //WxUserTokenService.delLoginFhUser(token); + WechatAuthUtil.logoutByToken(token); return R.ok(); } } diff --git a/bnyer-common/bnyer-common-security/src/main/java/com/bnyer/common/security/auth/CreatorAuthLogic.java b/bnyer-common/bnyer-common-security/src/main/java/com/bnyer/common/security/auth/CreatorAuthLogic.java new file mode 100644 index 0000000..44f50d0 --- /dev/null +++ b/bnyer-common/bnyer-common-security/src/main/java/com/bnyer/common/security/auth/CreatorAuthLogic.java @@ -0,0 +1,66 @@ +package com.bnyer.common.security.auth; + +import com.bnyer.common.core.utils.SpringUtils; +import com.bnyer.common.security.service.CreatorTokenService; +import com.bnyer.common.security.service.TiktokUserTokenService; +import com.bnyer.img.api.model.LoginCreator; +import com.bnyer.img.api.model.LoginTiktokUser; + +/** + * 艺术家Token 权限验证,逻辑实现类 + * + * @author penny + */ +public class CreatorAuthLogic +{ + + public CreatorTokenService tokenService = SpringUtils.getBean(CreatorTokenService.class); + + + /** + * 会话注销,根据指定Token + */ + public void logoutByToken(String token) + { + tokenService.delLoginCreator(token); + } + + + /** + * 获取当前用户缓存信息, 如果未登录,则抛出异常 + * + * @param token 前端传递的认证信息 + * @return 用户缓存信息 + */ + public LoginCreator getLoginUser(String token) + { + return tokenService.getLoginUser(token); + } + + /** + * 验证当前用户有效期, 如果相差不足120分钟,自动刷新缓存 + * + * @param loginCreator 当前用户信息 + */ + public void verifyLoginUserExpire(LoginCreator loginCreator) + { + tokenService.verifyToken(loginCreator); + } + + + + + + + + + + + + + + + + + +} diff --git a/bnyer-common/bnyer-common-security/src/main/java/com/bnyer/common/security/auth/CreatorAuthUtil.java b/bnyer-common/bnyer-common-security/src/main/java/com/bnyer/common/security/auth/CreatorAuthUtil.java new file mode 100644 index 0000000..aa98987 --- /dev/null +++ b/bnyer-common/bnyer-common-security/src/main/java/com/bnyer/common/security/auth/CreatorAuthUtil.java @@ -0,0 +1,45 @@ +package com.bnyer.common.security.auth; + +import com.bnyer.img.api.model.LoginCreator; + +/** + * 抖音Token 权限验证工具类 + * + * @author penny + */ +public class CreatorAuthUtil +{ + /** + * 底层的 AuthLogic 对象 + */ + public static CreatorAuthLogic authLogic = new CreatorAuthLogic(); + + + /** + * 会话注销,根据指定Token + * + * @param token 指定token + */ + public static void logoutByToken(String token) + { + authLogic.logoutByToken(token); + } + + + /** + * 获取当前登录用户信息 + */ + public static LoginCreator getLoginUser(String token) + { + return authLogic.getLoginUser(token); + } + + /** + * 验证当前用户有效期 + */ + public static void verifyLoginUserExpire(LoginCreator loginCreator) + { + authLogic.verifyLoginUserExpire(loginCreator); + } + +} diff --git a/bnyer-common/bnyer-common-security/src/main/java/com/bnyer/common/security/auth/FhAuthLogic.java b/bnyer-common/bnyer-common-security/src/main/java/com/bnyer/common/security/auth/FhAuthLogic.java new file mode 100644 index 0000000..628ef5d --- /dev/null +++ b/bnyer-common/bnyer-common-security/src/main/java/com/bnyer/common/security/auth/FhAuthLogic.java @@ -0,0 +1,64 @@ +package com.bnyer.common.security.auth; + +import com.bnyer.common.core.utils.SpringUtils; +import com.bnyer.common.security.service.FhUserTokenService; +import com.bnyer.img.api.model.LoginFhUser; + +/** + * 快手Token 权限验证,逻辑实现类 + * + * @author penny + */ +public class FhAuthLogic +{ + + public FhUserTokenService tokenService = SpringUtils.getBean(FhUserTokenService.class); + + + /** + * 会话注销,根据指定Token + */ + public void logoutByToken(String token) + { + tokenService.delLoginFhUser(token); + } + + + /** + * 获取当前用户缓存信息, 如果未登录,则抛出异常 + * + * @param token 前端传递的认证信息 + * @return 用户缓存信息 + */ + public LoginFhUser getLoginUser(String token) + { + return tokenService.getLoginUser(token); + } + + /** + * 验证当前用户有效期, 如果相差不足120分钟,自动刷新缓存 + * + * @param loginFhUser 当前用户信息 + */ + public void verifyLoginUserExpire(LoginFhUser loginFhUser) + { + tokenService.verifyToken(loginFhUser); + } + + + + + + + + + + + + + + + + + +} diff --git a/bnyer-common/bnyer-common-security/src/main/java/com/bnyer/common/security/auth/FhAuthUtil.java b/bnyer-common/bnyer-common-security/src/main/java/com/bnyer/common/security/auth/FhAuthUtil.java new file mode 100644 index 0000000..64490fc --- /dev/null +++ b/bnyer-common/bnyer-common-security/src/main/java/com/bnyer/common/security/auth/FhAuthUtil.java @@ -0,0 +1,45 @@ +package com.bnyer.common.security.auth; + +import com.bnyer.img.api.model.LoginFhUser; + +/** + * 快手Token 权限验证工具类 + * + * @author penny + */ +public class FhAuthUtil +{ + /** + * 底层的 AuthLogic 对象 + */ + public static FhAuthLogic authLogic = new FhAuthLogic(); + + + /** + * 会话注销,根据指定Token + * + * @param token 指定token + */ + public static void logoutByToken(String token) + { + authLogic.logoutByToken(token); + } + + + /** + * 获取当前登录用户信息 + */ + public static LoginFhUser getLoginUser(String token) + { + return authLogic.getLoginUser(token); + } + + /** + * 验证当前用户有效期 + */ + public static void verifyLoginUserExpire(LoginFhUser loginFhUser) + { + authLogic.verifyLoginUserExpire(loginFhUser); + } + +} diff --git a/bnyer-common/bnyer-common-security/src/main/java/com/bnyer/common/security/auth/TiktokAuthLogic.java b/bnyer-common/bnyer-common-security/src/main/java/com/bnyer/common/security/auth/TiktokAuthLogic.java new file mode 100644 index 0000000..8802d59 --- /dev/null +++ b/bnyer-common/bnyer-common-security/src/main/java/com/bnyer/common/security/auth/TiktokAuthLogic.java @@ -0,0 +1,64 @@ +package com.bnyer.common.security.auth; + +import com.bnyer.common.core.utils.SpringUtils; +import com.bnyer.common.security.service.TiktokUserTokenService; +import com.bnyer.img.api.model.LoginTiktokUser; + +/** + * 抖音Token 权限验证,逻辑实现类 + * + * @author penny + */ +public class TiktokAuthLogic +{ + + public TiktokUserTokenService tokenService = SpringUtils.getBean(TiktokUserTokenService.class); + + + /** + * 会话注销,根据指定Token + */ + public void logoutByToken(String token) + { + tokenService.delLoginTiktokUser(token); + } + + + /** + * 获取当前用户缓存信息, 如果未登录,则抛出异常 + * + * @param token 前端传递的认证信息 + * @return 用户缓存信息 + */ + public LoginTiktokUser getLoginUser(String token) + { + return tokenService.getLoginUser(token); + } + + /** + * 验证当前用户有效期, 如果相差不足120分钟,自动刷新缓存 + * + * @param loginTiktokUser 当前用户信息 + */ + public void verifyLoginUserExpire(LoginTiktokUser loginTiktokUser) + { + tokenService.verifyToken(loginTiktokUser); + } + + + + + + + + + + + + + + + + + +} diff --git a/bnyer-common/bnyer-common-security/src/main/java/com/bnyer/common/security/auth/TiktokAuthUtil.java b/bnyer-common/bnyer-common-security/src/main/java/com/bnyer/common/security/auth/TiktokAuthUtil.java new file mode 100644 index 0000000..fbfacb4 --- /dev/null +++ b/bnyer-common/bnyer-common-security/src/main/java/com/bnyer/common/security/auth/TiktokAuthUtil.java @@ -0,0 +1,45 @@ +package com.bnyer.common.security.auth; + +import com.bnyer.img.api.model.LoginTiktokUser; + +/** + * 抖音Token 权限验证工具类 + * + * @author penny + */ +public class TiktokAuthUtil +{ + /** + * 底层的 AuthLogic 对象 + */ + public static TiktokAuthLogic authLogic = new TiktokAuthLogic(); + + + /** + * 会话注销,根据指定Token + * + * @param token 指定token + */ + public static void logoutByToken(String token) + { + authLogic.logoutByToken(token); + } + + + /** + * 获取当前登录用户信息 + */ + public static LoginTiktokUser getLoginUser(String token) + { + return authLogic.getLoginUser(token); + } + + /** + * 验证当前用户有效期 + */ + public static void verifyLoginUserExpire(LoginTiktokUser loginTiktokUser) + { + authLogic.verifyLoginUserExpire(loginTiktokUser); + } + +} diff --git a/bnyer-common/bnyer-common-security/src/main/java/com/bnyer/common/security/auth/WechatAuthLogic.java b/bnyer-common/bnyer-common-security/src/main/java/com/bnyer/common/security/auth/WechatAuthLogic.java new file mode 100644 index 0000000..351a475 --- /dev/null +++ b/bnyer-common/bnyer-common-security/src/main/java/com/bnyer/common/security/auth/WechatAuthLogic.java @@ -0,0 +1,66 @@ +package com.bnyer.common.security.auth; + +import com.bnyer.common.core.utils.SpringUtils; +import com.bnyer.common.security.service.TiktokUserTokenService; +import com.bnyer.common.security.service.WxUserTokenService; +import com.bnyer.img.api.model.LoginTiktokUser; +import com.bnyer.img.api.model.LoginWechatUser; + +/** + * 微信Token 权限验证,逻辑实现类 + * + * @author penny + */ +public class WechatAuthLogic +{ + + public WxUserTokenService tokenService = SpringUtils.getBean(WxUserTokenService.class); + + + /** + * 会话注销,根据指定Token + */ + public void logoutByToken(String token) + { + tokenService.delLoginWechatUser(token); + } + + + /** + * 获取当前用户缓存信息, 如果未登录,则抛出异常 + * + * @param token 前端传递的认证信息 + * @return 用户缓存信息 + */ + public LoginWechatUser getLoginUser(String token) + { + return tokenService.getLoginUser(token); + } + + /** + * 验证当前用户有效期, 如果相差不足120分钟,自动刷新缓存 + * + * @param loginWechatUser 当前用户信息 + */ + public void verifyLoginUserExpire(LoginWechatUser loginWechatUser) + { + tokenService.verifyToken(loginWechatUser); + } + + + + + + + + + + + + + + + + + +} diff --git a/bnyer-common/bnyer-common-security/src/main/java/com/bnyer/common/security/auth/WechatAuthUtil.java b/bnyer-common/bnyer-common-security/src/main/java/com/bnyer/common/security/auth/WechatAuthUtil.java new file mode 100644 index 0000000..239cdbb --- /dev/null +++ b/bnyer-common/bnyer-common-security/src/main/java/com/bnyer/common/security/auth/WechatAuthUtil.java @@ -0,0 +1,45 @@ +package com.bnyer.common.security.auth; + +import com.bnyer.img.api.model.LoginWechatUser; + +/** + * 微信Token 权限验证工具类 + * + * @author penny + */ +public class WechatAuthUtil +{ + /** + * 底层的 AuthLogic 对象 + */ + public static WechatAuthLogic authLogic = new WechatAuthLogic(); + + + /** + * 会话注销,根据指定Token + * + * @param token 指定token + */ + public static void logoutByToken(String token) + { + authLogic.logoutByToken(token); + } + + + /** + * 获取当前登录用户信息 + */ + public static LoginWechatUser getLoginUser(String token) + { + return authLogic.getLoginUser(token); + } + + /** + * 验证当前用户有效期 + */ + public static void verifyLoginUserExpire(LoginWechatUser loginWechatUser) + { + authLogic.verifyLoginUserExpire(loginWechatUser); + } + +} diff --git a/bnyer-common/bnyer-common-security/src/main/java/com/bnyer/common/security/interceptor/HeaderInterceptor.java b/bnyer-common/bnyer-common-security/src/main/java/com/bnyer/common/security/interceptor/HeaderInterceptor.java index 05bde6f..0711b83 100644 --- a/bnyer-common/bnyer-common-security/src/main/java/com/bnyer/common/security/interceptor/HeaderInterceptor.java +++ b/bnyer-common/bnyer-common-security/src/main/java/com/bnyer/common/security/interceptor/HeaderInterceptor.java @@ -5,7 +5,12 @@ import javax.servlet.http.HttpServletResponse; import com.alibaba.fastjson.JSON; import com.bnyer.common.core.constant.TokenConstants; +import com.bnyer.common.security.auth.*; import com.bnyer.common.security.utils.SecurityUtils; +import com.bnyer.img.api.model.LoginCreator; +import com.bnyer.img.api.model.LoginFhUser; +import com.bnyer.img.api.model.LoginTiktokUser; +import com.bnyer.img.api.model.LoginWechatUser; import lombok.extern.slf4j.Slf4j; import org.springframework.web.method.HandlerMethod; import org.springframework.web.servlet.AsyncHandlerInterceptor; @@ -13,7 +18,6 @@ import com.bnyer.common.core.constant.SecurityConstants; import com.bnyer.common.core.context.SecurityContextHolder; import com.bnyer.common.core.utils.ServletUtils; import com.bnyer.common.core.utils.StringUtils; -import com.bnyer.common.security.auth.AuthUtil; import com.bnyer.system.api.model.LoginUser; /** @@ -56,6 +60,13 @@ public class HeaderInterceptor implements AsyncHandlerInterceptor log.info("SecurityContextHolderUserId,{}", JSON.toJSONString(SecurityContextHolder.getCreatorId())); log.info("SecurityContextHolderUserKey,{}", JSON.toJSONString(SecurityContextHolder.getCreatorKey())); log.info("SecurityContextHolderPhone,{}", JSON.toJSONString(SecurityContextHolder.getCreatorPhone())); + + LoginCreator loginUser = CreatorAuthUtil.getLoginUser(creatorToken); + if (StringUtils.isNotNull(loginUser)) + { + CreatorAuthUtil.verifyLoginUserExpire(loginUser); + SecurityContextHolder.set(SecurityConstants.LOGIN_CREATOR, loginUser); + } }else if(StringUtils.isNotEmpty(tiktokToken)){ SecurityContextHolder.setTikTokUserId(ServletUtils.getHeader(request, SecurityConstants.DETAILS_TIKTOK_USER_ID)); SecurityContextHolder.setTikTokUserName(ServletUtils.getHeader(request, SecurityConstants.DETAILS_TIKTOK_USERNAME)); @@ -65,6 +76,13 @@ public class HeaderInterceptor implements AsyncHandlerInterceptor log.info("SecurityContextHolderUserName,{}", JSON.toJSONString(SecurityContextHolder.getTikTokUserName())); log.info("SecurityContextHolderUserKey,{}", JSON.toJSONString(SecurityContextHolder.getTikTokUserKey())); log.info("SecurityContextHolderOpenId,{}", JSON.toJSONString(SecurityContextHolder.getTikTokOpenId())); + + LoginTiktokUser loginUser = TiktokAuthUtil.getLoginUser(tiktokToken); + if (StringUtils.isNotNull(loginUser)) + { + TiktokAuthUtil.verifyLoginUserExpire(loginUser); + SecurityContextHolder.set(SecurityConstants.LOGIN_TIKTOK_USER, loginUser); + } }else if(StringUtils.isNotEmpty(fhToken)){ SecurityContextHolder.setFhUserId(ServletUtils.getHeader(request, SecurityConstants.DETAILS_FH_USER_ID)); SecurityContextHolder.setFhUserName(ServletUtils.getHeader(request, SecurityConstants.DETAILS_FH_USERNAME)); @@ -74,6 +92,13 @@ public class HeaderInterceptor implements AsyncHandlerInterceptor log.info("SecurityContextHolderUserName,{}", JSON.toJSONString(SecurityContextHolder.getFhUserName())); log.info("SecurityContextHolderUserKey,{}", JSON.toJSONString(SecurityContextHolder.getFhUserKey())); log.info("SecurityContextHolderOpenId,{}", JSON.toJSONString(SecurityContextHolder.getFhOpenId())); + + LoginFhUser loginUser = FhAuthUtil.getLoginUser(fhToken); + if (StringUtils.isNotNull(loginUser)) + { + FhAuthUtil.verifyLoginUserExpire(loginUser); + SecurityContextHolder.set(SecurityConstants.LOGIN_FH_USER, loginUser); + } }else if(StringUtils.isNotEmpty(wechatToken)){ SecurityContextHolder.setWechatUserId(ServletUtils.getHeader(request, SecurityConstants.DETAILS_WECHAT_USER_ID)); SecurityContextHolder.setWechatUserName(ServletUtils.getHeader(request, SecurityConstants.DETAILS_WECHAT_USERNAME)); @@ -83,6 +108,13 @@ public class HeaderInterceptor implements AsyncHandlerInterceptor log.info("SecurityContextHolderUserName,{}", JSON.toJSONString(SecurityContextHolder.getWechatUserName())); log.info("SecurityContextHolderUserKey,{}", JSON.toJSONString(SecurityContextHolder.getWechatUserKey())); log.info("SecurityContextHolderOpenId,{}", JSON.toJSONString(SecurityContextHolder.getWechatOpenId())); + + LoginWechatUser loginUser = WechatAuthUtil.getLoginUser(wechatToken); + if (StringUtils.isNotNull(loginUser)) + { + WechatAuthUtil.verifyLoginUserExpire(loginUser); + SecurityContextHolder.set(SecurityConstants.LOGIN_WECHAT_USER, loginUser); + } } diff --git a/bnyer-common/bnyer-common-security/src/main/java/com/bnyer/common/security/service/CreatorTokenService.java b/bnyer-common/bnyer-common-security/src/main/java/com/bnyer/common/security/service/CreatorTokenService.java index 0c81ae0..0d551a2 100644 --- a/bnyer-common/bnyer-common-security/src/main/java/com/bnyer/common/security/service/CreatorTokenService.java +++ b/bnyer-common/bnyer-common-security/src/main/java/com/bnyer/common/security/service/CreatorTokenService.java @@ -36,6 +36,8 @@ public class CreatorTokenService private final static String ACCESS_TOKEN = RedisKeyConstant.WECHAT_CREATOR_LOGIN_KEY; + private final static Long MILLIS_MINUTE_TEN = CacheConstants.REFRESH_TIME * MILLIS_MINUTE; + /** * 创建令牌 */ @@ -76,6 +78,45 @@ public class CreatorTokenService } } + /** + * 获取用户身份信息 + * + * @return 用户信息 + */ + public LoginCreator getLoginUser(String token) + { + LoginCreator user = null; + try + { + if (StringUtils.isNotEmpty(token)) + { + // + String phone = JwtUtils.getCreatorPhone(token); + user = redisService.getCacheObject(getTokenKey(phone)); + return user; + } + } + catch (Exception e) + { + } + return user; + } + + /** + * 验证令牌有效期,相差不足120分钟,自动刷新缓存 + * + * @param loginCreator 艺术家用户 + */ + public void verifyToken(LoginCreator loginCreator) + { + long expireTime = loginCreator.getExpireTime(); + long currentTime = System.currentTimeMillis(); + if (expireTime - currentTime <= MILLIS_MINUTE_TEN) + { + refreshToken(loginCreator); + } + } + /** * 刷新令牌有效期 * diff --git a/bnyer-common/bnyer-common-security/src/main/java/com/bnyer/common/security/service/FhUserTokenService.java b/bnyer-common/bnyer-common-security/src/main/java/com/bnyer/common/security/service/FhUserTokenService.java index d088326..e4675d6 100644 --- a/bnyer-common/bnyer-common-security/src/main/java/com/bnyer/common/security/service/FhUserTokenService.java +++ b/bnyer-common/bnyer-common-security/src/main/java/com/bnyer/common/security/service/FhUserTokenService.java @@ -36,6 +36,8 @@ public class FhUserTokenService private final static String ACCESS_TOKEN = RedisKeyConstant.FH_USER_LOGIN_KEY; + private final static Long MILLIS_MINUTE_TEN = CacheConstants.REFRESH_TIME * MILLIS_MINUTE; + /** * 创建令牌 */ @@ -79,6 +81,45 @@ public class FhUserTokenService } } + /** + * 获取用户身份信息 + * + * @return 用户信息 + */ + public LoginFhUser getLoginUser(String token) + { + LoginFhUser user = null; + try + { + if (StringUtils.isNotEmpty(token)) + { + // + String openId = JwtUtils.getFhUserOpenid(token); + user = redisService.getCacheObject(getTokenKey(openId)); + return user; + } + } + catch (Exception e) + { + } + return user; + } + + /** + * 验证令牌有效期,相差不足120分钟,自动刷新缓存 + * + * @param loginFhUser 快手用户 + */ + public void verifyToken(LoginFhUser loginFhUser) + { + long expireTime = loginFhUser.getExpireTime(); + long currentTime = System.currentTimeMillis(); + if (expireTime - currentTime <= MILLIS_MINUTE_TEN) + { + refreshToken(loginFhUser); + } + } + /** * 刷新令牌有效期 * diff --git a/bnyer-common/bnyer-common-security/src/main/java/com/bnyer/common/security/service/TiktokUserTokenService.java b/bnyer-common/bnyer-common-security/src/main/java/com/bnyer/common/security/service/TiktokUserTokenService.java index 3301ae3..d8c6984 100644 --- a/bnyer-common/bnyer-common-security/src/main/java/com/bnyer/common/security/service/TiktokUserTokenService.java +++ b/bnyer-common/bnyer-common-security/src/main/java/com/bnyer/common/security/service/TiktokUserTokenService.java @@ -10,6 +10,7 @@ import com.bnyer.common.core.utils.ip.IpUtils; import com.bnyer.common.core.utils.uuid.IdUtils; import com.bnyer.common.redis.service.RedisService; import com.bnyer.img.api.model.LoginTiktokUser; +import com.bnyer.system.api.model.LoginUser; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -36,6 +37,8 @@ public class TiktokUserTokenService private final static String ACCESS_TOKEN = RedisKeyConstant.TIKTOK_USER_LOGIN_KEY; + private final static Long MILLIS_MINUTE_TEN = CacheConstants.REFRESH_TIME * MILLIS_MINUTE; + /** * 创建令牌 */ @@ -70,7 +73,7 @@ public class TiktokUserTokenService /** * 删除抖音小程序用户缓存信息 */ - public void delLoginFhUser(String token) + public void delLoginTiktokUser(String token) { if (StringUtils.isNotEmpty(token)) { @@ -79,6 +82,45 @@ public class TiktokUserTokenService } } + /** + * 获取用户身份信息 + * + * @return 用户信息 + */ + public LoginTiktokUser getLoginUser(String token) + { + LoginTiktokUser user = null; + try + { + if (StringUtils.isNotEmpty(token)) + { + // + String openId = JwtUtils.getTiktokUserOpenid(token); + user = redisService.getCacheObject(getTokenKey(openId)); + return user; + } + } + catch (Exception e) + { + } + return user; + } + + /** + * 验证令牌有效期,相差不足120分钟,自动刷新缓存 + * + * @param loginTiktokUser 抖音用户 + */ + public void verifyToken(LoginTiktokUser loginTiktokUser) + { + long expireTime = loginTiktokUser.getExpireTime(); + long currentTime = System.currentTimeMillis(); + if (expireTime - currentTime <= MILLIS_MINUTE_TEN) + { + refreshToken(loginTiktokUser); + } + } + /** * 刷新令牌有效期 * diff --git a/bnyer-common/bnyer-common-security/src/main/java/com/bnyer/common/security/service/WxUserTokenService.java b/bnyer-common/bnyer-common-security/src/main/java/com/bnyer/common/security/service/WxUserTokenService.java index 037c72b..55c270d 100644 --- a/bnyer-common/bnyer-common-security/src/main/java/com/bnyer/common/security/service/WxUserTokenService.java +++ b/bnyer-common/bnyer-common-security/src/main/java/com/bnyer/common/security/service/WxUserTokenService.java @@ -9,7 +9,6 @@ import com.bnyer.common.core.utils.StringUtils; import com.bnyer.common.core.utils.ip.IpUtils; import com.bnyer.common.core.utils.uuid.IdUtils; import com.bnyer.common.redis.service.RedisService; -import com.bnyer.img.api.model.LoginFhUser; import com.bnyer.img.api.model.LoginWechatUser; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -37,6 +36,8 @@ public class WxUserTokenService private final static String ACCESS_TOKEN = RedisKeyConstant.WECHAT_USER_LOGIN_KEY; + private final static Long MILLIS_MINUTE_TEN = CacheConstants.REFRESH_TIME * MILLIS_MINUTE; + /** * 创建令牌 */ @@ -71,12 +72,51 @@ public class WxUserTokenService /** * 删除微信小程序用户缓存信息 */ - public void delLoginFhUser(String token) + public void delLoginWechatUser(String token) { if (StringUtils.isNotEmpty(token)) { - String wxUserKey = JwtUtils.getWechatUserOpenid(token); - redisService.deleteObject(getTokenKey(wxUserKey)); + String openId = JwtUtils.getWechatUserOpenid(token); + redisService.deleteObject(getTokenKey(openId)); + } + } + + /** + * 获取用户身份信息 + * + * @return 用户信息 + */ + public LoginWechatUser getLoginUser(String token) + { + LoginWechatUser user = null; + try + { + if (StringUtils.isNotEmpty(token)) + { + // + String openId = JwtUtils.getWechatUserOpenid(token); + user = redisService.getCacheObject(getTokenKey(openId)); + return user; + } + } + catch (Exception e) + { + } + return user; + } + + /** + * 验证令牌有效期,相差不足120分钟,自动刷新缓存 + * + * @param loginWechatUser 微信用户 + */ + public void verifyToken(LoginWechatUser loginWechatUser) + { + long expireTime = loginWechatUser.getExpireTime(); + long currentTime = System.currentTimeMillis(); + if (expireTime - currentTime <= MILLIS_MINUTE_TEN) + { + refreshToken(loginWechatUser); } }