Browse Source

header处理获取用户信息数据

feature-1.1
Penny 3 years ago
parent
commit
b369d81f88
  1. 25
      bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/constant/UserClientTypeConstants.java
  2. 1
      bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/enums/EnumUserClientType.java
  3. 243
      bnyer-common/bnyer-common-security/src/main/java/com/bnyer/common/security/interceptor/HeaderInterceptor.java
  4. 35
      bnyer-common/bnyer-common-security/src/main/java/com/bnyer/common/security/utils/SecurityUtils.java

25
bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/constant/UserClientTypeConstants.java

@ -0,0 +1,25 @@
package com.bnyer.common.core.constant;
/**
* 客户端用户常量信息
*
* @author penny
*/
public class UserClientTypeConstants
{
/** 抖音用户 */
public static final String DU = "10";
/** 快手用户 */
public static final String KU = "20";
/** 微信用户 */
public static final String WU = "30";
/** 微信艺术家 */
public static final String WY = "40";
/** pc管理员 */
public static final String PU = "50";
}

1
bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/enums/EnumUserClientType.java

@ -15,6 +15,7 @@ public enum EnumUserClientType {
KU(20,"KU","快手用户"),
WU(30,"WU","微信用户"),
WY(40,"WY","微信艺术家"),
PU(50,"PU","pc管理员")
;
private final int type;

243
bnyer-common/bnyer-common-security/src/main/java/com/bnyer/common/security/interceptor/HeaderInterceptor.java

@ -5,6 +5,8 @@ import javax.servlet.http.HttpServletResponse;
import com.alibaba.fastjson.JSON;
import com.bnyer.common.core.constant.TokenConstants;
import com.bnyer.common.core.constant.UserClientTypeConstants;
import com.bnyer.common.core.enums.EnumUserClientType;
import com.bnyer.common.security.auth.*;
import com.bnyer.common.security.utils.SecurityUtils;
import com.bnyer.img.api.model.LoginCreator;
@ -20,6 +22,8 @@ import com.bnyer.common.core.utils.ServletUtils;
import com.bnyer.common.core.utils.StringUtils;
import com.bnyer.system.api.model.LoginUser;
import java.util.Enumeration;
/**
* 自定义请求头拦截器将Header数据封装到线程变量中方便获取
* 注意此拦截器会同时验证当前用户有效期自动刷新有效期
@ -37,99 +41,176 @@ public class HeaderInterceptor implements AsyncHandlerInterceptor
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.setUserName(ServletUtils.getHeader(request, SecurityConstants.DETAILS_USERNAME));
SecurityContextHolder.setUserKey(ServletUtils.getHeader(request, SecurityConstants.USER_KEY));
String platform = request.getHeader("platform");
switch (platform){
//抖音
case UserClientTypeConstants.DU:
String tiktokToken = SecurityUtils.getTiktokToken(request);
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));
log.info("SecurityContextHolderUserId,{}", JSON.toJSONString(SecurityContextHolder.getTikTokUserId()));
log.info("SecurityContextHolderUserName,{}", JSON.toJSONString(SecurityContextHolder.getTikTokUserName()));
log.info("SecurityContextHolderUserKey,{}", JSON.toJSONString(SecurityContextHolder.getTikTokUserKey()));
log.info("SecurityContextHolderOpenId,{}", JSON.toJSONString(SecurityContextHolder.getTikTokOpenId()));
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));
log.info("SecurityContextHolderUserId,{}", JSON.toJSONString(SecurityContextHolder.getCreatorId()));
log.info("SecurityContextHolderUserKey,{}", JSON.toJSONString(SecurityContextHolder.getCreatorKey()));
log.info("SecurityContextHolderPhone,{}", JSON.toJSONString(SecurityContextHolder.getCreatorPhone()));
LoginTiktokUser loginTiktokUser = TiktokAuthUtil.getLoginUser(tiktokToken);
if (StringUtils.isNotNull(loginTiktokUser))
{
TiktokAuthUtil.verifyLoginUserExpire(loginTiktokUser);
SecurityContextHolder.set(SecurityConstants.LOGIN_TIKTOK_USER, loginTiktokUser);
}
break;
//快手
case UserClientTypeConstants.KU:
String fhToken = SecurityUtils.getFhToken(request);
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));
log.info("SecurityContextHolderUserId,{}", JSON.toJSONString(SecurityContextHolder.getFhUserId()));
log.info("SecurityContextHolderUserName,{}", JSON.toJSONString(SecurityContextHolder.getFhUserName()));
log.info("SecurityContextHolderUserKey,{}", JSON.toJSONString(SecurityContextHolder.getFhUserKey()));
log.info("SecurityContextHolderOpenId,{}", JSON.toJSONString(SecurityContextHolder.getFhOpenId()));
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));
SecurityContextHolder.setTikTokUserKey(ServletUtils.getHeader(request, SecurityConstants.TIKTOK_USER_KEY));
SecurityContextHolder.setTikTokOpenId(ServletUtils.getHeader(request, SecurityConstants.DETAILS_TIKTOK_OPENID));
log.info("SecurityContextHolderUserId,{}", JSON.toJSONString(SecurityContextHolder.getTikTokUserId()));
log.info("SecurityContextHolderUserName,{}", JSON.toJSONString(SecurityContextHolder.getTikTokUserName()));
log.info("SecurityContextHolderUserKey,{}", JSON.toJSONString(SecurityContextHolder.getTikTokUserKey()));
log.info("SecurityContextHolderOpenId,{}", JSON.toJSONString(SecurityContextHolder.getTikTokOpenId()));
LoginFhUser loginFhUser = FhAuthUtil.getLoginUser(fhToken);
if (StringUtils.isNotNull(loginFhUser))
{
FhAuthUtil.verifyLoginUserExpire(loginFhUser);
SecurityContextHolder.set(SecurityConstants.LOGIN_FH_USER, loginFhUser);
}
break;
//微信
case UserClientTypeConstants.WU:
String wechatToken = SecurityUtils.getWechatToken(request);
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));
log.info("SecurityContextHolderUserId,{}", JSON.toJSONString(SecurityContextHolder.getWechatUserId()));
log.info("SecurityContextHolderUserName,{}", JSON.toJSONString(SecurityContextHolder.getWechatUserName()));
log.info("SecurityContextHolderUserKey,{}", JSON.toJSONString(SecurityContextHolder.getWechatUserKey()));
log.info("SecurityContextHolderOpenId,{}", JSON.toJSONString(SecurityContextHolder.getWechatOpenId()));
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));
SecurityContextHolder.setFhUserKey(ServletUtils.getHeader(request, SecurityConstants.FH_USER_KEY));
SecurityContextHolder.setFhOpenId(ServletUtils.getHeader(request, SecurityConstants.DETAILS_FH_OPENID));
log.info("SecurityContextHolderUserId,{}", JSON.toJSONString(SecurityContextHolder.getFhUserId()));
log.info("SecurityContextHolderUserName,{}", JSON.toJSONString(SecurityContextHolder.getFhUserName()));
log.info("SecurityContextHolderUserKey,{}", JSON.toJSONString(SecurityContextHolder.getFhUserKey()));
log.info("SecurityContextHolderOpenId,{}", JSON.toJSONString(SecurityContextHolder.getFhOpenId()));
LoginWechatUser loginWxUser = WechatAuthUtil.getLoginUser(wechatToken);
if (StringUtils.isNotNull(loginWxUser))
{
WechatAuthUtil.verifyLoginUserExpire(loginWxUser);
SecurityContextHolder.set(SecurityConstants.LOGIN_WECHAT_USER, loginWxUser);
}
break;
//微信艺术家
case UserClientTypeConstants.WY:
String creatorToken = SecurityUtils.getCreatorToken(request);
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));
log.info("SecurityContextHolderUserId,{}", JSON.toJSONString(SecurityContextHolder.getCreatorId()));
log.info("SecurityContextHolderUserKey,{}", JSON.toJSONString(SecurityContextHolder.getCreatorKey()));
log.info("SecurityContextHolderPhone,{}", JSON.toJSONString(SecurityContextHolder.getCreatorPhone()));
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));
SecurityContextHolder.setWechatUserKey(ServletUtils.getHeader(request, SecurityConstants.WECHAT_USER_KEY));
SecurityContextHolder.setWechatOpenId(ServletUtils.getHeader(request, SecurityConstants.DETAILS_WECHAT_OPENID));
log.info("SecurityContextHolderUserId,{}", JSON.toJSONString(SecurityContextHolder.getWechatUserId()));
log.info("SecurityContextHolderUserName,{}", JSON.toJSONString(SecurityContextHolder.getWechatUserName()));
log.info("SecurityContextHolderUserKey,{}", JSON.toJSONString(SecurityContextHolder.getWechatUserKey()));
log.info("SecurityContextHolderOpenId,{}", JSON.toJSONString(SecurityContextHolder.getWechatOpenId()));
LoginCreator loginCreator = CreatorAuthUtil.getLoginUser(creatorToken);
if (StringUtils.isNotNull(loginCreator))
{
CreatorAuthUtil.verifyLoginUserExpire(loginCreator);
SecurityContextHolder.set(SecurityConstants.LOGIN_CREATOR, loginCreator);
}
break;
//PC管理员
case UserClientTypeConstants.PU:
String pcToken = SecurityUtils.getToken(request);
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));
LoginWechatUser loginUser = WechatAuthUtil.getLoginUser(wechatToken);
if (StringUtils.isNotNull(loginUser))
{
WechatAuthUtil.verifyLoginUserExpire(loginUser);
SecurityContextHolder.set(SecurityConstants.LOGIN_WECHAT_USER, loginUser);
}
LoginUser loginUser = AuthUtil.getLoginUser(pcToken);
if (StringUtils.isNotNull(loginUser))
{
AuthUtil.verifyLoginUserExpire(loginUser);
SecurityContextHolder.set(SecurityConstants.LOGIN_USER, loginUser);
}
break;
}
// String token = SecurityUtils.getToken();
// if (StringUtils.isNotEmpty(token))
// {
// LoginUser loginUser = AuthUtil.getLoginUser(token);
// 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));
//
// 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));
// 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));
// SecurityContextHolder.setTikTokUserKey(ServletUtils.getHeader(request, SecurityConstants.TIKTOK_USER_KEY));
// SecurityContextHolder.setTikTokOpenId(ServletUtils.getHeader(request, SecurityConstants.DETAILS_TIKTOK_OPENID));
// log.info("SecurityContextHolderUserId,{}", JSON.toJSONString(SecurityContextHolder.getTikTokUserId()));
// 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));
// SecurityContextHolder.setFhUserKey(ServletUtils.getHeader(request, SecurityConstants.FH_USER_KEY));
// SecurityContextHolder.setFhOpenId(ServletUtils.getHeader(request, SecurityConstants.DETAILS_FH_OPENID));
// log.info("SecurityContextHolderUserId,{}", JSON.toJSONString(SecurityContextHolder.getFhUserId()));
// 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));
// SecurityContextHolder.setWechatUserKey(ServletUtils.getHeader(request, SecurityConstants.WECHAT_USER_KEY));
// SecurityContextHolder.setWechatOpenId(ServletUtils.getHeader(request, SecurityConstants.DETAILS_WECHAT_OPENID));
// log.info("SecurityContextHolderUserId,{}", JSON.toJSONString(SecurityContextHolder.getWechatUserId()));
// 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);
// }
// }
return true;
}

35
bnyer-common/bnyer-common-security/src/main/java/com/bnyer/common/security/utils/SecurityUtils.java

@ -2,6 +2,8 @@ package com.bnyer.common.security.utils;
import javax.servlet.http.HttpServletRequest;
import com.bnyer.common.core.constant.UserClientTypeConstants;
import com.bnyer.common.core.enums.EnumUserClientType;
import com.bnyer.img.api.model.LoginCreator;
import com.bnyer.img.api.model.LoginFhUser;
import com.bnyer.img.api.model.LoginTiktokUser;
@ -13,6 +15,8 @@ import com.bnyer.common.core.constant.TokenConstants;
import com.bnyer.common.core.context.SecurityContextHolder;
import com.bnyer.common.core.utils.ServletUtils;
import com.bnyer.common.core.utils.StringUtils;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import java.util.Objects;
@ -24,6 +28,37 @@ import java.util.Objects;
public class SecurityUtils
{
//******************************通用获取信息开始*********************************************
/**
* 根据从header中获取类型判断从而获取用户信息
* @param <T> 用户信息
* @return -
*/
public <T> T getUserInfo(){
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String platform = request.getHeader("platform");
switch (platform){
case UserClientTypeConstants.DU:
LoginTiktokUser loginTikTokUser = getLoginTikTokUser();
return (T) loginTikTokUser;
case UserClientTypeConstants.WU:
LoginWechatUser loginWechatUser = getLoginWechatUser();
return (T) loginWechatUser;
case UserClientTypeConstants.KU:
LoginFhUser loginFhUser = getLoginFhUser();
return (T) loginFhUser;
case UserClientTypeConstants.WY:
LoginCreator loginCreator = getLoginCreator();
return (T) loginCreator;
default:
break;
}
return null;
}
//******************************通用获取信息结束*********************************************
//***************************PC信息开始*********************************************
/**
* 获取用户ID

Loading…
Cancel
Save