Commit 660b9156 authored by 唐峰's avatar 唐峰

合同签署处理登录渠道

parent e88fe98e
...@@ -37,6 +37,8 @@ public interface Constants { ...@@ -37,6 +37,8 @@ public interface Constants {
String X_AUTH_APP_ID = "qg-app-id"; String X_AUTH_APP_ID = "qg-app-id";
String X_AUTH_FROM = "qg-registered-from"; String X_AUTH_FROM = "qg-registered-from";
//兼容可能的渠道
String X_AUTH_FROM_ = "vccChannel";
String X_STMS_TOKEN = "qg-stms-token"; String X_STMS_TOKEN = "qg-stms-token";
String X_BEHAVIOR_TYPE = "qg-behavior-type"; String X_BEHAVIOR_TYPE = "qg-behavior-type";
......
...@@ -76,6 +76,7 @@ public class PasswordFreeAccessValidateAdvisor { ...@@ -76,6 +76,7 @@ public class PasswordFreeAccessValidateAdvisor {
// 当前请求的phoneNo/userId // 当前请求的phoneNo/userId
String phoneNo = request.getParameter(Constants.PHONE_NO); String phoneNo = request.getParameter(Constants.PHONE_NO);
String userId = request.getParameter(USER_ID); String userId = request.getParameter(USER_ID);
String from = request.getParameter(Constants.X_AUTH_FROM);
if (StringUtils.isBlank(phoneNo) && StringUtils.isBlank(userId)) { if (StringUtils.isBlank(phoneNo) && StringUtils.isBlank(userId)) {
log.info("非法请求 - 缺少参数, phoneNo={}, userId={}, clientIp={}", phoneNo, userId, clientIp); log.info("非法请求 - 缺少参数, phoneNo={}, userId={}, clientIp={}", phoneNo, userId, clientIp);
return false; return false;
...@@ -97,7 +98,7 @@ public class PasswordFreeAccessValidateAdvisor { ...@@ -97,7 +98,7 @@ public class PasswordFreeAccessValidateAdvisor {
// } // }
// 当前session // 当前session
SessionStruct session = XyqbSessionContextHolder.getXSessionFromRedis(token,tenantId); SessionStruct session = XyqbSessionContextHolder.getXSessionFromRedis(token,tenantId,from == null ? null :Long.parseLong(from));
if (Objects.isNull(session) || Objects.isNull(session.getValues()) || Objects.isNull(session.getValues().getUser())) { if (Objects.isNull(session) || Objects.isNull(session.getValues()) || Objects.isNull(session.getValues().getUser())) {
log.info("非法请求 - 未登录, token={}, phoneNo={}, userId={}, clientIp={}", token, phoneNo, userId, clientIp); log.info("非法请求 - 未登录, token={}, phoneNo={}, userId={}, clientIp={}", token, phoneNo, userId, clientIp);
return false; return false;
......
...@@ -62,6 +62,18 @@ public interface IBaseController { ...@@ -62,6 +62,18 @@ public interface IBaseController {
return Integer.parseInt(tenantIdStr); return Integer.parseInt(tenantIdStr);
} }
default Long getRegisteredFrom() {
String from = getRequest().getHeader(Constants.X_AUTH_FROM);
if (StringUtils.isNotEmpty(from)) {
return Long.parseLong(from);
}
from = getRequest().getHeader(Constants.X_AUTH_FROM_);
if (StringUtils.isNotEmpty(from)) {
return Long.parseLong(from);
}
return null;
}
default SessionStruct getCurrentSessionFromRedis() { default SessionStruct getCurrentSessionFromRedis() {
return getXSessionFromRedis(); return getXSessionFromRedis();
} }
......
...@@ -550,6 +550,7 @@ public class UserController implements IBaseController { ...@@ -550,6 +550,7 @@ public class UserController implements IBaseController {
if (tenantId == null) { if (tenantId == null) {
tenantId = tenantIdHeader; tenantId = tenantIdHeader;
} }
Long registeredFrom = getRegisteredFrom();
Map<String, Object> result = new HashMap<>(); Map<String, Object> result = new HashMap<>();
result.put("exist", false); result.put("exist", false);
if (StringUtils.isEmpty(token)) { if (StringUtils.isEmpty(token)) {
...@@ -558,12 +559,12 @@ public class UserController implements IBaseController { ...@@ -558,12 +559,12 @@ public class UserController implements IBaseController {
if (token.contains(Constants.TOKEN_MASTER)) { if (token.contains(Constants.TOKEN_MASTER)) {
return JsonResult.buildSuccessResult(null, result); return JsonResult.buildSuccessResult(null, result);
} }
SessionStruct sessionStruct = XyqbSessionContextHolder.getXSessionFromRedis(token, tenantId); SessionStruct sessionStruct = XyqbSessionContextHolder.getXSessionFromRedis(token, tenantId,registeredFrom);
if (sessionStruct == null || sessionStruct.getValues() == null) { if (sessionStruct == null || sessionStruct.getValues() == null) {
// 使用token去电商查询信息, 如果token 不包含本系统token前缀 // 使用token去电商查询信息, 如果token 不包含本系统token前缀
if (!token.contains(prefix)) { if (!token.contains(prefix)) {
findTokenExchange(token, tenantId); findTokenExchange(token, tenantId);
sessionStruct = XyqbSessionContextHolder.getXSessionFromRedis(token, tenantId); sessionStruct = XyqbSessionContextHolder.getXSessionFromRedis(token, tenantId,registeredFrom);
if (sessionStruct == null || sessionStruct.getValues() == null) { if (sessionStruct == null || sessionStruct.getValues() == null) {
return JsonResult.buildSuccessResult(null, result); return JsonResult.buildSuccessResult(null, result);
} }
...@@ -596,7 +597,7 @@ public class UserController implements IBaseController { ...@@ -596,7 +597,7 @@ public class UserController implements IBaseController {
if (tenantId == null) { if (tenantId == null) {
tenantId = tenantIdHeader; tenantId = tenantIdHeader;
} }
Long registeredFrom = getRegisteredFrom();
TokenExchange tokenExchange = new TokenExchange(); TokenExchange tokenExchange = new TokenExchange();
if (StringUtils.isEmpty(token)) { if (StringUtils.isEmpty(token)) {
return JsonResult.buildSuccessResult(null, tokenExchange); return JsonResult.buildSuccessResult(null, tokenExchange);
...@@ -604,7 +605,7 @@ public class UserController implements IBaseController { ...@@ -604,7 +605,7 @@ public class UserController implements IBaseController {
if (token.contains(Constants.TOKEN_MASTER)) { if (token.contains(Constants.TOKEN_MASTER)) {
return JsonResult.buildSuccessResult(null, tokenExchange); return JsonResult.buildSuccessResult(null, tokenExchange);
} }
SessionStruct sessionStruct = XyqbSessionContextHolder.getXSessionFromRedis(token, tenantId); SessionStruct sessionStruct = XyqbSessionContextHolder.getXSessionFromRedis(token, tenantId,registeredFrom);
if (sessionStruct == null || sessionStruct.getValues() == null) { if (sessionStruct == null || sessionStruct.getValues() == null) {
return JsonResult.buildSuccessResult(null, tokenExchange); return JsonResult.buildSuccessResult(null, tokenExchange);
} }
......
...@@ -3,6 +3,7 @@ package cn.quantgroup.xyqb.controller.internal.user; ...@@ -3,6 +3,7 @@ package cn.quantgroup.xyqb.controller.internal.user;
import cn.quantgroup.xyqb.Constants; import cn.quantgroup.xyqb.Constants;
import cn.quantgroup.xyqb.aspect.accessable.IpValidator; import cn.quantgroup.xyqb.aspect.accessable.IpValidator;
import cn.quantgroup.xyqb.constant.UserConstant; import cn.quantgroup.xyqb.constant.UserConstant;
import cn.quantgroup.xyqb.controller.IBaseController;
import cn.quantgroup.xyqb.entity.User; import cn.quantgroup.xyqb.entity.User;
import cn.quantgroup.xyqb.exception.VerificationCodeErrorException; import cn.quantgroup.xyqb.exception.VerificationCodeErrorException;
import cn.quantgroup.xyqb.model.JsonResult; import cn.quantgroup.xyqb.model.JsonResult;
...@@ -27,7 +28,7 @@ import java.util.Objects; ...@@ -27,7 +28,7 @@ import java.util.Objects;
@Slf4j @Slf4j
@RestController @RestController
@RequestMapping("/api") @RequestMapping("/api")
public class UserApiController { public class UserApiController implements IBaseController {
@Resource @Resource
private IUserService userService; private IUserService userService;
...@@ -71,6 +72,7 @@ public class UserApiController { ...@@ -71,6 +72,7 @@ public class UserApiController {
if (Objects.isNull(token) || !ValidationUtil.validateToken(token)) { if (Objects.isNull(token) || !ValidationUtil.validateToken(token)) {
return JsonResult.buildErrorStateResult("token regular invalid ", token); return JsonResult.buildErrorStateResult("token regular invalid ", token);
} }
Long registeredFrom = getRegisteredFrom();
String tokenKey = Constants.SESSION_PREFIX + token; String tokenKey = Constants.SESSION_PREFIX + token;
String tokenKey2; String tokenKey2;
...@@ -85,7 +87,7 @@ public class UserApiController { ...@@ -85,7 +87,7 @@ public class UserApiController {
/* token存在且需要延续时,进一步判断session是否有效,有效时,自动续期 */ /* token存在且需要延续时,进一步判断session是否有效,有效时,自动续期 */
if (Boolean.logicalAnd(exist, prolong)) { if (Boolean.logicalAnd(exist, prolong)) {
// 获取session信息 // 获取session信息
SessionStruct sessionStruct = XyqbSessionContextHolder.getXSessionFromRedis(token,tenantId); SessionStruct sessionStruct = XyqbSessionContextHolder.getXSessionFromRedis(token,tenantId,registeredFrom);
if (Objects.isNull(sessionStruct)) { if (Objects.isNull(sessionStruct)) {
log.info("延续token:[{}]生命期,result:[{}],SessionStruct:{}", token, false, sessionStruct); log.info("延续token:[{}]生命期,result:[{}],SessionStruct:{}", token, false, sessionStruct);
/* 如果没有获取到session信息则返回错误信息 */ /* 如果没有获取到session信息则返回错误信息 */
......
...@@ -40,6 +40,7 @@ public class InnerInterceptor implements HandlerInterceptor { ...@@ -40,6 +40,7 @@ public class InnerInterceptor implements HandlerInterceptor {
//所有开放出去的外部接口,都需要验证租户id和注册来源 //所有开放出去的外部接口,都需要验证租户id和注册来源
String tenantId = request.getHeader(Constants.X_AUTH_TENANT); String tenantId = request.getHeader(Constants.X_AUTH_TENANT);
String registeredFrom = request.getHeader(Constants.X_AUTH_FROM); String registeredFrom = request.getHeader(Constants.X_AUTH_FROM);
registeredFrom = org.apache.commons.lang3.StringUtils.isEmpty(registeredFrom) ? request.getHeader(Constants.X_AUTH_FROM_) : registeredFrom;
String stmsToken = request.getHeader(Constants.X_AUTH_TOKEN); String stmsToken = request.getHeader(Constants.X_AUTH_TOKEN);
if (StringUtils.isEmpty(tenantId)) { if (StringUtils.isEmpty(tenantId)) {
throw new BizException(BizExceptionEnum.UN_EXIT_TENANT_ID); throw new BizException(BizExceptionEnum.UN_EXIT_TENANT_ID);
...@@ -49,7 +50,7 @@ public class InnerInterceptor implements HandlerInterceptor { ...@@ -49,7 +50,7 @@ public class InnerInterceptor implements HandlerInterceptor {
throw new BizException(BizExceptionEnum.UN_EXIT_STMS_TOKEN); throw new BizException(BizExceptionEnum.UN_EXIT_STMS_TOKEN);
} }
SessionStruct sessionStruct = XyqbSessionContextHolder.getXSessionFromRedis(stmsToken, Integer.valueOf(tenantId)); SessionStruct sessionStruct = XyqbSessionContextHolder.getXSessionFromRedis(stmsToken, Integer.valueOf(tenantId),org.apache.commons.lang3.StringUtils.isEmpty(registeredFrom) ? null:Long.valueOf(registeredFrom));
if (sessionStruct == null) { if (sessionStruct == null) {
OauthResult oauthResult = stmsRemoteService.checkToken(stmsToken); OauthResult oauthResult = stmsRemoteService.checkToken(stmsToken);
......
...@@ -582,7 +582,7 @@ public class UserServiceImpl implements IUserService, IBaseController { ...@@ -582,7 +582,7 @@ public class UserServiceImpl implements IUserService, IBaseController {
JSONArray array = new JSONArray(); JSONArray array = new JSONArray();
array.add(json); array.add(json);
registeredNotifyBlackHoleRabbitTemplate.convertAndSend(exchange, routingKey, array.toString()); registeredNotifyBlackHoleRabbitTemplate.convertAndSend(exchange, routingKey, array.toString());
log.info("登录补签合同事件:userId:{},templateIds:{}",user.getId(),templateId);
}); });
log.info("登录补签合同事件:userId:{},templateIds:{}",user.getId(),templates);
} }
} }
...@@ -70,7 +70,7 @@ public class LoginContext { ...@@ -70,7 +70,7 @@ public class LoginContext {
//第三步、发送登录成功消息 //第三步、发送登录成功消息
SessionStruct sessionStruct = XyqbSessionContextHolder.getXSession(); SessionStruct sessionStruct = XyqbSessionContextHolder.getXSession();
Long registeredFrom = sessionStruct.getRegisteredFrom(); Long registeredFrom = sessionStruct.getRegisteredFrom();
if (sessionStruct.getValues() != null && sessionStruct.getValues().getLoginProperties() != null) { if (registeredFrom == null && sessionStruct.getValues() != null && sessionStruct.getValues().getLoginProperties() != null) {
registeredFrom = sessionStruct.getValues().getLoginProperties().getCreatedFrom(); registeredFrom = sessionStruct.getValues().getLoginProperties().getCreatedFrom();
} }
......
...@@ -130,12 +130,14 @@ public class XyqbSessionContextHolder { ...@@ -130,12 +130,14 @@ public class XyqbSessionContextHolder {
public static SessionStruct getXSessionFromRedis() { public static SessionStruct getXSessionFromRedis() {
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String token = request.getHeader(Constants.X_AUTH_TOKEN); String token = request.getHeader(Constants.X_AUTH_TOKEN);
String from = request.getHeader(Constants.X_AUTH_FROM);
from = StringUtils.isEmpty(from) ? request.getHeader(Constants.X_AUTH_FROM_) : from;
int tenantId= UserConstant.defaultTenantId; int tenantId= UserConstant.defaultTenantId;
String tenantIdString = request.getHeader(Constants.X_AUTH_TENANT); String tenantIdString = request.getHeader(Constants.X_AUTH_TENANT);
if(StringUtils.isNotEmpty(tenantIdString)){ if(StringUtils.isNotEmpty(tenantIdString)){
tenantId = Integer.parseInt(tenantIdString); tenantId = Integer.parseInt(tenantIdString);
} }
return getXSessionFromRedis(token,tenantId); return getXSessionFromRedis(token,tenantId,StringUtils.isEmpty(from) ? null:Long.valueOf(from));
} }
public static String getXSessionFromTenantRedis() { public static String getXSessionFromTenantRedis() {
...@@ -143,7 +145,7 @@ public class XyqbSessionContextHolder { ...@@ -143,7 +145,7 @@ public class XyqbSessionContextHolder {
return request.getHeader(Constants.X_AUTH_TENANT); return request.getHeader(Constants.X_AUTH_TENANT);
} }
public static SessionStruct getXSessionFromRedis(String token,Integer tenantId) { public static SessionStruct getXSessionFromRedis(String token,Integer tenantId,Long registeredFrom) {
String linkToken; String linkToken;
if (UserConstant.defaultTenantId.equals(tenantId)) { if (UserConstant.defaultTenantId.equals(tenantId)) {
linkToken = Constants.Session.USER_SESSION_CACHE + token; linkToken = Constants.Session.USER_SESSION_CACHE + token;
...@@ -165,7 +167,8 @@ public class XyqbSessionContextHolder { ...@@ -165,7 +167,8 @@ public class XyqbSessionContextHolder {
} else { } else {
if (values.getLoginProperties() != null) { if (values.getLoginProperties() != null) {
sessionStruct.setTenantId(values.getLoginProperties().getTenantId()); sessionStruct.setTenantId(values.getLoginProperties().getTenantId());
sessionStruct.setRegisteredFrom(values.getLoginProperties().getCreatedFrom()); //sessionStruct.setRegisteredFrom(values.getLoginProperties().getCreatedFrom());
sessionStruct.setRegisteredFrom(registeredFrom);
} }
} }
sessionStruct.setSid(token); sessionStruct.setSid(token);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment