Эх сурвалжийг харах

feature: 增加过滤API接口不获取用户信息

huangzqa 4 жил өмнө
parent
commit
8b53df5e54

+ 19 - 0
src/main/java/com/dragoninfo/dcuc/authweb/interceptor/SecurityAccessTokenResolver.java

@@ -11,6 +11,7 @@ import com.dragonsoft.duceap.security.jwt.securityaccess.SecurityAccessTokenProp
 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;
@@ -35,8 +36,26 @@ public class SecurityAccessTokenResolver implements ISecurityAccessTokenResolver
     @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());
 
         if (cacheResolver != null) {