From 0d53dc33ce7f322ad1cd6989a938caf892830e3c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=98=E2=80=98?= Date: Tue, 2 May 2023 01:35:45 +0800 Subject: [PATCH] =?UTF-8?q?feature-1.0-img:security=E9=89=B4=E6=9D=83?= =?UTF-8?q?=E6=96=B9=E6=B3=95=E6=94=B9=E5=86=99=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/constant/SecurityConstants.java | 17 +- .../core/context/SecurityContextHolder.java | 165 ++++++++++++++ .../interceptor/HeaderInterceptor.java | 52 ++++- .../common/security/utils/SecurityUtils.java | 208 +++++++++++++++--- 4 files changed, 403 insertions(+), 39 deletions(-) diff --git a/bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/constant/SecurityConstants.java b/bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/constant/SecurityConstants.java index b8e855e..0f6a84b 100644 --- a/bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/constant/SecurityConstants.java +++ b/bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/constant/SecurityConstants.java @@ -7,7 +7,7 @@ package com.bnyer.common.core.constant; */ public class SecurityConstants { - //***************************艺术家信息开始************************************ + //***************************PC信息开始************************************ /** * 用户ID字段 */ @@ -87,6 +87,11 @@ public class SecurityConstants * 抖音用户openId */ public static final String DETAILS_TIKTOK_OPENID = "tiktok_user_openid"; + + /** + * 登录抖音用户 + */ + public static final String LOGIN_TIKTOK_USER = "login_tiktok_user"; //***************************抖音用户信息结束************************************ //***************************微信用户信息开始************************************ @@ -109,6 +114,11 @@ public class SecurityConstants * 微信用户openId */ public static final String DETAILS_WECHAT_OPENID = "wechat_user_openid"; + + /** + * 登录微信用户 + */ + public static final String LOGIN_WECHAT_USER = "login_wechat_user"; //***************************微信用户信息结束************************************ //***************************快手用户信息开始************************************ @@ -132,5 +142,10 @@ public class SecurityConstants */ public static final String DETAILS_FH_OPENID = "fh_user_openid"; + /** + * 登录快手用户 + */ + public static final String LOGIN_FH_USER = "login_fh_user"; + //***************************快手用户信息结束************************************ } diff --git a/bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/context/SecurityContextHolder.java b/bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/context/SecurityContextHolder.java index e123cb5..609cfa7 100644 --- a/bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/context/SecurityContextHolder.java +++ b/bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/context/SecurityContextHolder.java @@ -51,6 +51,7 @@ public class SecurityContextHolder THREAD_LOCAL.set(threadLocalMap); } + //***************************PC信息开始************************************ public static Long getUserId() { return Convert.toLong(get(SecurityConstants.DETAILS_USER_ID), 0L); @@ -80,6 +81,170 @@ public class SecurityContextHolder { set(SecurityConstants.USER_KEY, userKey); } + //***************************PC信息结束************************************ + + //***************************艺术家信息开始************************************ + + public static Long getCreatorId() + { + return Convert.toLong(get(SecurityConstants.DETAILS_CREATOR_ID), 0L); + } + + public static void setCreatorId(String creator) + { + set(SecurityConstants.DETAILS_CREATOR_ID, creator); + } + + public static String getCreatorKey() + { + return get(SecurityConstants.CREATOR_KEY); + } + + public static void setCreatorKey(String creatorKey) + { + set(SecurityConstants.CREATOR_KEY, creatorKey); + } + + public static String getCreatorPhone() + { + return get(SecurityConstants.DETAILS_PHONE); + } + + public static void setCreatorPhone(String creatorPhone) + { + set(SecurityConstants.DETAILS_PHONE, creatorPhone); + } + + //***************************艺术家信息结束************************************ + + //***************************抖音用户信息开始************************************ + + public static String getTikTokOpenId() + { + return get(SecurityConstants.DETAILS_TIKTOK_OPENID); + } + + public static void setTikTokOpenId(String tikTokOpenId) + { + set(SecurityConstants.DETAILS_TIKTOK_OPENID, tikTokOpenId); + } + + public static String getTikTokUserName() + { + return get(SecurityConstants.DETAILS_TIKTOK_USERNAME); + } + + public static void setTikTokUserName(String tikTokUserName) + { + set(SecurityConstants.DETAILS_TIKTOK_USERNAME, tikTokUserName); + } + + public static String getTikTokUserKey() + { + return get(SecurityConstants.TIKTOK_USER_KEY); + } + + public static void setTikTokUserKey(String tikTokUserKey) + { + set(SecurityConstants.TIKTOK_USER_KEY, tikTokUserKey); + } + + public static Long getTikTokUserId() + { + return Convert.toLong(get(SecurityConstants.DETAILS_TIKTOK_USER_ID), 0L); + } + + public static void setTikTokUserId(String tiktokUser) + { + set(SecurityConstants.DETAILS_TIKTOK_USER_ID, tiktokUser); + } + //***************************抖音用户信息结束************************************ + + //***************************微信用户信息开始************************************ + public static String getWechatOpenId() + { + return get(SecurityConstants.DETAILS_WECHAT_OPENID); + } + + public static void setWechatOpenId(String wechatOpenId) + { + set(SecurityConstants.DETAILS_WECHAT_OPENID, wechatOpenId); + } + + public static String getWechatUserName() + { + return get(SecurityConstants.DETAILS_WECHAT_USERNAME); + } + + public static void setWechatUserName(String wechatUserName) + { + set(SecurityConstants.DETAILS_WECHAT_USERNAME, wechatUserName); + } + + public static String getWechatUserKey() + { + return get(SecurityConstants.WECHAT_USER_KEY); + } + + public static void setWechatUserKey(String WechatUserKey) + { + set(SecurityConstants.WECHAT_USER_KEY, WechatUserKey); + } + + public static Long getWechatUserId() + { + return Convert.toLong(get(SecurityConstants.DETAILS_WECHAT_USER_ID), 0L); + } + + public static void setWechatUserId(String WechatUser) + { + set(SecurityConstants.DETAILS_WECHAT_USER_ID, WechatUser); + } + + //***************************微信用户信息结束************************************ + + //***************************快手用户信息开始************************************ + public static String getFhOpenId() + { + return get(SecurityConstants.DETAILS_FH_OPENID); + } + + public static void setFhOpenId(String FhOpenId) + { + set(SecurityConstants.DETAILS_FH_OPENID, FhOpenId); + } + + public static String getFhUserName() + { + return get(SecurityConstants.DETAILS_FH_USERNAME); + } + + public static void setFhUserName(String FhUserName) + { + set(SecurityConstants.DETAILS_FH_USERNAME, FhUserName); + } + + public static String getFhUserKey() + { + return get(SecurityConstants.FH_USER_KEY); + } + + public static void setFhUserKey(String FhUserKey) + { + set(SecurityConstants.FH_USER_KEY, FhUserKey); + } + + public static Long getFhUserId() + { + return Convert.toLong(get(SecurityConstants.DETAILS_FH_USER_ID), 0L); + } + + public static void setFhUserId(String FhUser) + { + set(SecurityConstants.DETAILS_FH_USER_ID, FhUser); + } + + //***************************快手用户信息结束************************************ public static void remove() { 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 ddda529..9a214e9 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 @@ -30,21 +30,57 @@ public class HeaderInterceptor implements AsyncHandlerInterceptor return true; } - SecurityContextHolder.setUserId(ServletUtils.getHeader(request, SecurityConstants.DETAILS_USER_ID)); - SecurityContextHolder.setUserName(ServletUtils.getHeader(request, SecurityConstants.DETAILS_USERNAME)); - SecurityContextHolder.setUserKey(ServletUtils.getHeader(request, SecurityConstants.USER_KEY)); + String pcToken = SecurityUtils.getToken(request); + String creatorToken = SecurityUtils.getCreatorToken(request); + String tiktokToken = SecurityUtils.getTiktokToken(request); + String fhToken = SecurityUtils.getFhToken(request); + String wechatToken = SecurityUtils.getWechatToken(request); + if(StringUtils.isNotEmpty(pcToken)){ + SecurityContextHolder.setUserId(ServletUtils.getHeader(request, SecurityConstants.DETAILS_USER_ID)); + SecurityContextHolder.setUserName(ServletUtils.getHeader(request, SecurityConstants.DETAILS_USERNAME)); + SecurityContextHolder.setUserKey(ServletUtils.getHeader(request, SecurityConstants.USER_KEY)); - //String token = SecurityUtils.getToken(TokenConstants.AUTHENTICATION); - String token = SecurityUtils.getToken(); - if (StringUtils.isNotEmpty(token)) - { - LoginUser loginUser = AuthUtil.getLoginUser(token); + LoginUser loginUser = AuthUtil.getLoginUser(pcToken); if (StringUtils.isNotNull(loginUser)) { AuthUtil.verifyLoginUserExpire(loginUser); SecurityContextHolder.set(SecurityConstants.LOGIN_USER, loginUser); } + }else if(StringUtils.isNotEmpty(creatorToken)){ + SecurityContextHolder.setCreatorId(ServletUtils.getHeader(request, SecurityConstants.DETAILS_CREATOR_ID)); + SecurityContextHolder.setCreatorPhone(ServletUtils.getHeader(request, SecurityConstants.DETAILS_PHONE)); + SecurityContextHolder.setCreatorKey(ServletUtils.getHeader(request, SecurityConstants.CREATOR_KEY)); + }else if(StringUtils.isNotEmpty(tiktokToken)){ + SecurityContextHolder.setTikTokUserId(ServletUtils.getHeader(request, SecurityConstants.DETAILS_TIKTOK_USER_ID)); + SecurityContextHolder.setTikTokUserName(ServletUtils.getHeader(request, SecurityConstants.DETAILS_TIKTOK_USERNAME)); + SecurityContextHolder.setTikTokUserKey(ServletUtils.getHeader(request, SecurityConstants.TIKTOK_USER_KEY)); + SecurityContextHolder.setTikTokOpenId(ServletUtils.getHeader(request, SecurityConstants.DETAILS_TIKTOK_OPENID)); + }else if(StringUtils.isNotEmpty(fhToken)){ + SecurityContextHolder.setFhUserId(ServletUtils.getHeader(request, SecurityConstants.DETAILS_FH_USER_ID)); + SecurityContextHolder.setFhUserName(ServletUtils.getHeader(request, SecurityConstants.DETAILS_FH_USERNAME)); + SecurityContextHolder.setFhUserKey(ServletUtils.getHeader(request, SecurityConstants.FH_USER_KEY)); + SecurityContextHolder.setFhOpenId(ServletUtils.getHeader(request, SecurityConstants.DETAILS_FH_OPENID)); + }else if(StringUtils.isNotEmpty(wechatToken)){ + SecurityContextHolder.setWechatUserId(ServletUtils.getHeader(request, SecurityConstants.DETAILS_WECHAT_USER_ID)); + SecurityContextHolder.setWechatUserName(ServletUtils.getHeader(request, SecurityConstants.DETAILS_WECHAT_USERNAME)); + SecurityContextHolder.setWechatUserKey(ServletUtils.getHeader(request, SecurityConstants.WECHAT_USER_KEY)); + SecurityContextHolder.setWechatOpenId(ServletUtils.getHeader(request, SecurityConstants.DETAILS_WECHAT_OPENID)); } + + + + + +// String token = SecurityUtils.getToken(); +// if (StringUtils.isNotEmpty(token)) +// { +// LoginUser loginUser = AuthUtil.getLoginUser(token); +// if (StringUtils.isNotNull(loginUser)) +// { +// AuthUtil.verifyLoginUserExpire(loginUser); +// SecurityContextHolder.set(SecurityConstants.LOGIN_USER, loginUser); +// } +// } return true; } diff --git a/bnyer-common/bnyer-common-security/src/main/java/com/bnyer/common/security/utils/SecurityUtils.java b/bnyer-common/bnyer-common-security/src/main/java/com/bnyer/common/security/utils/SecurityUtils.java index b1716c7..dba38f6 100644 --- a/bnyer-common/bnyer-common-security/src/main/java/com/bnyer/common/security/utils/SecurityUtils.java +++ b/bnyer-common/bnyer-common-security/src/main/java/com/bnyer/common/security/utils/SecurityUtils.java @@ -2,6 +2,10 @@ package com.bnyer.common.security.utils; import javax.servlet.http.HttpServletRequest; +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 com.bnyer.system.api.model.LoginUser; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import com.bnyer.common.core.constant.SecurityConstants; @@ -19,6 +23,8 @@ import java.util.Objects; */ public class SecurityUtils { + + //***************************PC信息开始********************************************* /** * 获取用户ID */ @@ -51,31 +57,6 @@ public class SecurityUtils return SecurityContextHolder.get(SecurityConstants.LOGIN_USER, LoginUser.class); } - /** - * 获取请求token - */ -// public static String getToken(String authType) -// { -// //PC -// switch (authType) { -// case TokenConstants.AUTHENTICATION: -// return getToken(Objects.requireNonNull(ServletUtils.getRequest())); -// //抖音 -// case TokenConstants.TIKTOK_APP_AUTH: -// return getTiktokToken(Objects.requireNonNull(ServletUtils.getRequest())); -// //快手 -// case TokenConstants.FASTHAND_APP_AUTH: -// return getFhToken(Objects.requireNonNull(ServletUtils.getRequest())); -// //微信 -// case TokenConstants.WECHAT_APP_AUTH: -// return getWechatToken(Objects.requireNonNull(ServletUtils.getRequest())); -// //艺术家端 -// default: -// return getCreatorToken(Objects.requireNonNull(ServletUtils.getRequest())); -// } -// -// } - /** * 获取请求token */ @@ -95,6 +76,41 @@ public class SecurityUtils return replaceTokenPrefix(token); } + //***************************PC信息结束************************************ + + //***************************艺术家信息开始************************************ + /** + * 获取艺术家ID + */ + public static Long getCreatorId() + { + return SecurityContextHolder.getCreatorId(); + } + + /** + * 获取艺术家手机号 + */ + public static String getCreatorPhone() + { + return SecurityContextHolder.getCreatorPhone(); + } + + /** + * 获取艺术家key + */ + public static String getCreatorKey() + { + return SecurityContextHolder.getCreatorKey(); + } + + /** + * 获取登录艺术家信息 + */ + public static LoginCreator getLoginCreator() + { + return SecurityContextHolder.get(SecurityConstants.LOGIN_CREATOR, LoginCreator.class); + } + /** * 根据request获取请求艺术家请求token */ @@ -105,14 +121,47 @@ public class SecurityUtils return replaceTokenPrefix(token); } + //***************************艺术家信息结束************************************ + + //***************************抖音用户信息开始************************************ /** - * 根据request获取微信小程序用户请求token + * 获取抖音用户ID */ - public static String getWechatToken(HttpServletRequest request) + public static Long getTikTokUserId() { - // 从header获取token标识 - String token = request.getHeader(TokenConstants.WECHAT_APP_AUTH); - return replaceTokenPrefix(token); + return SecurityContextHolder.getTikTokUserId(); + } + + /** + * 获取抖音用户名称 + */ + public static String getTikTokUserName() + { + return SecurityContextHolder.getTikTokUserName(); + } + + /** + * 获取抖音用户key + */ + public static String getTikTokUserKey() + { + return SecurityContextHolder.getTikTokUserKey(); + } + + /** + * 获取抖音用户openId + */ + public static String getTikTokOpenId() + { + return SecurityContextHolder.getTikTokOpenId(); + } + + /** + * 获取抖音登录用户信息 + */ + public static LoginTiktokUser getLoginTikTokUser() + { + return SecurityContextHolder.get(SecurityConstants.LOGIN_TIKTOK_USER, LoginTiktokUser.class); } /** @@ -125,6 +174,103 @@ public class SecurityUtils return replaceTokenPrefix(token); } + //***************************抖音用户信息结束************************************ + + + //***************************微信用户信息开始************************************ + /** + * 获取微信用户ID + */ + public static Long getWechatUserId() + { + return SecurityContextHolder.getWechatUserId(); + } + + /** + * 获取微信用户名称 + */ + public static String getWechatUserName() + { + return SecurityContextHolder.getWechatUserName(); + } + + /** + * 获取微信用户key + */ + public static String getWechatUserKey() + { + return SecurityContextHolder.getWechatUserKey(); + } + + /** + * 获取微信用户openId + */ + public static String getWechatOpenId() + { + return SecurityContextHolder.getWechatOpenId(); + } + + /** + * 获取微信登录用户信息 + */ + public static LoginWechatUser getLoginWechatUser() + { + return SecurityContextHolder.get(SecurityConstants.LOGIN_WECHAT_USER, LoginWechatUser.class); + } + + /** + * 根据request获取微信小程序用户请求token + */ + public static String getWechatToken(HttpServletRequest request) + { + // 从header获取token标识 + String token = request.getHeader(TokenConstants.WECHAT_APP_AUTH); + return replaceTokenPrefix(token); + } + + //***************************微信用户信息结束************************************ + + //***************************快手用户信息开始************************************ + /** + * 获取快手用户ID + */ + public static Long getFhUserId() + { + return SecurityContextHolder.getFhUserId(); + } + + /** + * 获取快手用户名称 + */ + public static String getFhUserName() + { + return SecurityContextHolder.getFhUserName(); + } + + /** + * 获取快手用户key + */ + public static String getFhUserKey() + { + return SecurityContextHolder.getFhUserKey(); + } + + /** + * 获取快手用户openId + */ + public static String getFhOpenId() + { + return SecurityContextHolder.getFhOpenId(); + } + + /** + * 获取快手登录用户信息 + */ + public static LoginFhUser getLoginFhUser() + { + return SecurityContextHolder.get(SecurityConstants.LOGIN_FH_USER, LoginFhUser.class); + } + /** * 根据request获取快手小程序用户请求token */ @@ -135,6 +281,8 @@ public class SecurityUtils return replaceTokenPrefix(token); } + //***************************快手用户信息结束************************************ + /** * 裁剪token前缀 */