Browse Source

feature-1.0-img:security鉴权方法改写优化

feature-1.1
‘‘ 3 years ago
parent
commit
0d53dc33ce
  1. 17
      bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/constant/SecurityConstants.java
  2. 165
      bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/context/SecurityContextHolder.java
  3. 46
      bnyer-common/bnyer-common-security/src/main/java/com/bnyer/common/security/interceptor/HeaderInterceptor.java
  4. 208
      bnyer-common/bnyer-common-security/src/main/java/com/bnyer/common/security/utils/SecurityUtils.java

17
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 public class SecurityConstants
{ {
//***************************艺术家信息开始************************************ //***************************PC信息开始************************************
/** /**
* 用户ID字段 * 用户ID字段
*/ */
@ -87,6 +87,11 @@ public class SecurityConstants
* 抖音用户openId * 抖音用户openId
*/ */
public static final String DETAILS_TIKTOK_OPENID = "tiktok_user_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 * 微信用户openId
*/ */
public static final String DETAILS_WECHAT_OPENID = "wechat_user_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 DETAILS_FH_OPENID = "fh_user_openid";
/**
* 登录快手用户
*/
public static final String LOGIN_FH_USER = "login_fh_user";
//***************************快手用户信息结束************************************ //***************************快手用户信息结束************************************
} }

165
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); THREAD_LOCAL.set(threadLocalMap);
} }
//***************************PC信息开始************************************
public static Long getUserId() public static Long getUserId()
{ {
return Convert.toLong(get(SecurityConstants.DETAILS_USER_ID), 0L); return Convert.toLong(get(SecurityConstants.DETAILS_USER_ID), 0L);
@ -80,6 +81,170 @@ public class SecurityContextHolder
{ {
set(SecurityConstants.USER_KEY, userKey); 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() public static void remove()
{ {

46
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; return true;
} }
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.setUserId(ServletUtils.getHeader(request, SecurityConstants.DETAILS_USER_ID));
SecurityContextHolder.setUserName(ServletUtils.getHeader(request, SecurityConstants.DETAILS_USERNAME)); SecurityContextHolder.setUserName(ServletUtils.getHeader(request, SecurityConstants.DETAILS_USERNAME));
SecurityContextHolder.setUserKey(ServletUtils.getHeader(request, SecurityConstants.USER_KEY)); SecurityContextHolder.setUserKey(ServletUtils.getHeader(request, SecurityConstants.USER_KEY));
//String token = SecurityUtils.getToken(TokenConstants.AUTHENTICATION); LoginUser loginUser = AuthUtil.getLoginUser(pcToken);
String token = SecurityUtils.getToken();
if (StringUtils.isNotEmpty(token))
{
LoginUser loginUser = AuthUtil.getLoginUser(token);
if (StringUtils.isNotNull(loginUser)) if (StringUtils.isNotNull(loginUser))
{ {
AuthUtil.verifyLoginUserExpire(loginUser); AuthUtil.verifyLoginUserExpire(loginUser);
SecurityContextHolder.set(SecurityConstants.LOGIN_USER, 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; return true;
} }

208
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 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 com.bnyer.system.api.model.LoginUser;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import com.bnyer.common.core.constant.SecurityConstants; import com.bnyer.common.core.constant.SecurityConstants;
@ -19,6 +23,8 @@ import java.util.Objects;
*/ */
public class SecurityUtils public class SecurityUtils
{ {
//***************************PC信息开始*********************************************
/** /**
* 获取用户ID * 获取用户ID
*/ */
@ -51,31 +57,6 @@ public class SecurityUtils
return SecurityContextHolder.get(SecurityConstants.LOGIN_USER, LoginUser.class); 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 * 获取请求token
*/ */
@ -95,6 +76,41 @@ public class SecurityUtils
return replaceTokenPrefix(token); 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 * 根据request获取请求艺术家请求token
*/ */
@ -105,14 +121,47 @@ public class SecurityUtils
return replaceTokenPrefix(token); return replaceTokenPrefix(token);
} }
//***************************艺术家信息结束************************************
//***************************抖音用户信息开始************************************
/** /**
* 根据request获取微信小程序用户请求token * 获取抖音用户ID
*/ */
public static String getWechatToken(HttpServletRequest request) public static Long getTikTokUserId()
{ {
// 从header获取token标识 return SecurityContextHolder.getTikTokUserId();
String token = request.getHeader(TokenConstants.WECHAT_APP_AUTH); }
return replaceTokenPrefix(token);
/**
* 获取抖音用户名称
*/
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); 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 * 根据request获取快手小程序用户请求token
*/ */
@ -135,6 +281,8 @@ public class SecurityUtils
return replaceTokenPrefix(token); return replaceTokenPrefix(token);
} }
//***************************快手用户信息结束************************************
/** /**
* 裁剪token前缀 * 裁剪token前缀
*/ */

Loading…
Cancel
Save