|
@@ -2,7 +2,9 @@ package com.dragoninfo.dcuc.authweb.interceptor;
|
|
|
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
import com.dragoninfo.dcuc.app.facade.IApplyInfoFacade;
|
|
|
+import com.dragoninfo.dcuc.authweb.business.HwIdentityBusiness;
|
|
|
import com.dragoninfo.dcuc.authweb.config.DcucAuthWebConfig;
|
|
|
+import com.dragoninfo.dcuc.authweb.enums.CheckTypeEnum;
|
|
|
import com.dragoninfo.dcuc.authweb.exception.EvidenceException;
|
|
|
import com.dragoninfo.dcuc.common.Constants;
|
|
|
import com.dragoninfo.dcuc.user.user.entity.UserInfo;
|
|
@@ -28,9 +30,13 @@ public class AuthBeforeResInterceptor implements HandlerInterceptor {
|
|
|
|
|
|
@Autowired
|
|
|
private IUserInfoFacade userInfoFacade;
|
|
|
+
|
|
|
@Autowired
|
|
|
private IApplyInfoFacade applyInfoFacade;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private HwIdentityBusiness hwIdentityBusiness;
|
|
|
+
|
|
|
@Autowired
|
|
|
private DcucAuthWebConfig dcucAuthWebConfig;
|
|
|
|
|
@@ -44,47 +50,53 @@ public class AuthBeforeResInterceptor implements HandlerInterceptor {
|
|
|
*/
|
|
|
@Override
|
|
|
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
|
|
|
+
|
|
|
+ CheckTypeEnum checkTypeEnum = dcucAuthWebConfig.getCheckTypeEnum();
|
|
|
+
|
|
|
log.info("AuthBeforeResInterceptor自定义拦截器");
|
|
|
|
|
|
- String idcard = getIdcard(request);
|
|
|
- String appCode = getAppCode(request);
|
|
|
+ if (checkTypeEnum.equals(CheckTypeEnum.BASE)) {
|
|
|
+ String idcard = getIdcard(request);
|
|
|
+ String appCode = getAppCode(request);
|
|
|
|
|
|
- log.info("Request header idcard:{},appCode:{}", idcard, appCode);
|
|
|
+ log.info("Request header idcard:{},appCode:{}", idcard, appCode);
|
|
|
|
|
|
- String userToken = getUserToken(request);
|
|
|
- String appToken = getAppToken(request);
|
|
|
+ if (StrUtil.isNotBlank(idcard) && StrUtil.isNotBlank(appCode)) {
|
|
|
+ if (StrUtil.isBlank(idcard) || StrUtil.isBlank(appCode)) {
|
|
|
+ throw new EvidenceException(HttpStatus.MULTIPLE_CHOICES.value(), "header参数不能为空");
|
|
|
+ }
|
|
|
+
|
|
|
+ UserInfo userInfo = userInfoFacade.userDetail("idcard", idcard);
|
|
|
+ if (userInfo == null) {
|
|
|
+ throw new EvidenceException(HttpStatus.MULTIPLE_CHOICES.value(), "header参数:idcard无权限,或身份证错误");
|
|
|
+ }
|
|
|
+ //校验应用
|
|
|
+ String appId = applyInfoFacade.codeConvertToId(appCode);
|
|
|
+ if (StrUtil.isBlank(appId)) {
|
|
|
+ throw new EvidenceException(HttpStatus.MULTIPLE_CHOICES.value(), "header参数:appCode无权限,或appCode错误");
|
|
|
+ }
|
|
|
+
|
|
|
+ request.setAttribute("idcard", idcard);
|
|
|
+ request.setAttribute("appCode", appCode);
|
|
|
|
|
|
- if (StrUtil.isNotBlank(idcard) && StrUtil.isNotBlank(appCode)) {
|
|
|
- if (StrUtil.isBlank(idcard) || StrUtil.isBlank(appCode)) {
|
|
|
- throw new EvidenceException(HttpStatus.MULTIPLE_CHOICES.value(), "header参数不能为空");
|
|
|
- }
|
|
|
- // 判断是否开启检查
|
|
|
- if (!dcucAuthWebConfig.isEnableApiCheck()) {
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
- UserInfo userInfo = userInfoFacade.userDetail("idcard", idcard);
|
|
|
- if (userInfo == null) {
|
|
|
- throw new EvidenceException(HttpStatus.MULTIPLE_CHOICES.value(), "header参数:idcard无权限,或身份证错误");
|
|
|
- }
|
|
|
- //校验应用
|
|
|
- String appId = applyInfoFacade.codeConvertToId(appCode);
|
|
|
- if (StrUtil.isBlank(appId)) {
|
|
|
- throw new EvidenceException(HttpStatus.MULTIPLE_CHOICES.value(), "header参数:appCode无权限,或appCode错误");
|
|
|
- }
|
|
|
+ } else if (checkTypeEnum.equals(CheckTypeEnum.TOKEN)) {
|
|
|
|
|
|
- return true;
|
|
|
- } else if (StrUtil.isNotBlank(userToken) && StrUtil.isNotBlank(appToken)) {
|
|
|
- //token校验
|
|
|
- log.info("Request header userToken:{},appToken:{}", userToken, appToken);
|
|
|
+ String userToken = getUserToken(request);
|
|
|
+ String appToken = getAppToken(request);
|
|
|
+ if (StrUtil.isNotBlank(userToken) && StrUtil.isNotBlank(appToken)) {
|
|
|
+ log.info("Request header userToken:{},appToken:{}", userToken, appToken);
|
|
|
|
|
|
- if (StrUtil.isBlank(appToken) || StrUtil.isBlank(userToken)) {
|
|
|
- throw new EvidenceException(HttpStatus.MULTIPLE_CHOICES.value(), "header参数不能为空");
|
|
|
- }
|
|
|
- //todo 校验token 未完善
|
|
|
+ if (StrUtil.isBlank(appToken) || StrUtil.isBlank(userToken)) {
|
|
|
+ throw new EvidenceException(HttpStatus.MULTIPLE_CHOICES.value(), "header参数不能为空");
|
|
|
+ }
|
|
|
|
|
|
- return true;
|
|
|
+ return hwIdentityBusiness.checkToken(userToken, appToken);
|
|
|
+ }
|
|
|
}
|
|
|
+
|
|
|
throw new EvidenceException(HttpStatus.MULTIPLE_CHOICES.value(), "请传入凭据");
|
|
|
}
|
|
|
|
|
@@ -110,8 +122,13 @@ public class AuthBeforeResInterceptor implements HandlerInterceptor {
|
|
|
String userToken = request.getHeader(Constants.DCUC_USER_TOKEN);
|
|
|
if (StrUtil.isBlank(userToken)) {
|
|
|
// 获取数据总线用户令牌
|
|
|
- request.getHeader(Constants.BUS_SRE_TOKEN);
|
|
|
+ userToken = request.getHeader(Constants.BUS_SRE_TOKEN);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (StrUtil.isBlank(userToken)) {
|
|
|
+ userToken = request.getHeader(Constants.USER_TOKEN);
|
|
|
}
|
|
|
+
|
|
|
return userToken;
|
|
|
}
|
|
|
|
|
@@ -122,6 +139,11 @@ public class AuthBeforeResInterceptor implements HandlerInterceptor {
|
|
|
// 获取数据总线应用令牌
|
|
|
appToken = request.getHeader(Constants.BUS_SRA_TOKEN);
|
|
|
}
|
|
|
+
|
|
|
+ if (StrUtil.isBlank(appToken)) {
|
|
|
+ appToken = request.getHeader(Constants.APP_TOKEN);
|
|
|
+ }
|
|
|
+
|
|
|
return appToken;
|
|
|
}
|
|
|
}
|