|
@@ -0,0 +1,102 @@
|
|
|
+package com.dragoninfo.dcuc.authweb.interceptor;
|
|
|
+
|
|
|
+import com.dragoninfo.dcuc.auth.auth.facade.IBimBusinessFacade;
|
|
|
+import com.dragoninfo.dcuc.auth.auth.vo.bim.BimUserInfoItemRespVO;
|
|
|
+import com.dragoninfo.dcuc.common.Constants;
|
|
|
+import com.dragoninfo.dcuc.user.user.entity.UserInfo;
|
|
|
+import com.dragoninfo.dcuc.user.user.facade.IUserFacade;
|
|
|
+import com.dragonsoft.duceap.base.api.security.ISecurityAccessTokenResolver;
|
|
|
+import com.dragonsoft.duceap.base.entity.security.BaseSecurityUser;
|
|
|
+import com.dragonsoft.duceap.base.entity.security.SecurityUser;
|
|
|
+import com.dragonsoft.duceap.commons.util.json.JsonUtils;
|
|
|
+import com.dragonsoft.duceap.security.jwt.securityaccess.SecurityAccessTokenProperties;
|
|
|
+import com.dragonsoft.duceap.security.jwt.securityaccess.SecurityAccessUserCacheResolver;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.boot.autoconfigure.web.ServerProperties;
|
|
|
+import org.springframework.stereotype.Component;
|
|
|
+
|
|
|
+import javax.servlet.http.HttpServletRequest;
|
|
|
+
|
|
|
+
|
|
|
+ * @author huangzqa
|
|
|
+ * @date 2021/4/15
|
|
|
+ **/
|
|
|
+@Slf4j
|
|
|
+@Component
|
|
|
+public class SecurityAccessTokenResolver implements ISecurityAccessTokenResolver {
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private SecurityAccessTokenProperties secAccessProp;
|
|
|
+
|
|
|
+ @Autowired(required = false)
|
|
|
+ private SecurityAccessUserCacheResolver cacheResolver;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private IBimBusinessFacade bimBusinessFacade;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private IUserFacade userFacade;
|
|
|
+
|
|
|
+ public static final String FILTER_URL = "/api";
|
|
|
+ @Autowired
|
|
|
+ private ServerProperties serverProperties;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public BaseSecurityUser resolve(HttpServletRequest request) {
|
|
|
+ String contextPath = serverProperties.getServlet().getContextPath();
|
|
|
+ String requestUri = request.getRequestURI();
|
|
|
+ log.debug("Security filter origin uri:{}", requestUri);
|
|
|
+
|
|
|
+
|
|
|
+ requestUri = requestUri.substring(contextPath.length());
|
|
|
+
|
|
|
+ log.debug("Security filter not context uri:{}", requestUri);
|
|
|
+
|
|
|
+ if (requestUri.startsWith(FILTER_URL)) {
|
|
|
+ log.debug("URI:{} Not need get user info.", requestUri);
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ String userToken = request.getHeader(secAccessProp.getUserTokenHeaderName());
|
|
|
+ String appToken = request.getHeader(Constants.APP_TOKEN);
|
|
|
+
|
|
|
+ log.info("userToken:{},appToken:{}", userToken, appToken);
|
|
|
+
|
|
|
+ if (cacheResolver != null) {
|
|
|
+
|
|
|
+ SecurityUser securityUserCache = (SecurityUser) cacheResolver.getIfPresent(cacheResolver.cacheKey(userToken));
|
|
|
+
|
|
|
+ if (securityUserCache != null) {
|
|
|
+ log.info("Cache securityUserCache:{}", JsonUtils.toJSONString(securityUserCache));
|
|
|
+
|
|
|
+ return securityUserCache;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ BimUserInfoItemRespVO userInfoItemRespVO = bimBusinessFacade.getUserInfoByUserToken(userToken);
|
|
|
+ String sfzh = userInfoItemRespVO.getSfzh();
|
|
|
+
|
|
|
+ UserInfo userInfo = userFacade.detailBySfzh(sfzh);
|
|
|
+ log.info("idcard:{}, userInfo :{}", sfzh, JsonUtils.toJSONString(userInfo));
|
|
|
+
|
|
|
+ SecurityUser securityUser = new SecurityUser();
|
|
|
+ securityUser.setId(userInfo.getId());
|
|
|
+ securityUser.setName(userInfo.getName());
|
|
|
+ securityUser.setUserName(userInfo.getIdcard());
|
|
|
+ securityUser.setPoliceNo(userInfo.getPoliceNumber());
|
|
|
+ securityUser.setIdcard(userInfo.getIdcard());
|
|
|
+ securityUser.setSecurityOrg(userInfo.getOrgCode());
|
|
|
+ securityUser.setSecurityOrgName(userInfo.getOrgName());
|
|
|
+
|
|
|
+
|
|
|
+ if (cacheResolver != null) {
|
|
|
+ cacheResolver.put(cacheResolver.cacheKey(userToken), securityUser);
|
|
|
+ }
|
|
|
+
|
|
|
+ log.info("return idcard:{}, securityUser :{}", sfzh, JsonUtils.toJSONString(securityUser));
|
|
|
+
|
|
|
+ return securityUser;
|
|
|
+ }
|
|
|
+
|
|
|
+}
|