|
@@ -1,8 +1,14 @@
|
|
package com.hb.proj.allconfig;
|
|
package com.hb.proj.allconfig;
|
|
|
|
|
|
import java.io.PrintWriter;
|
|
import java.io.PrintWriter;
|
|
|
|
+import java.util.Arrays;
|
|
|
|
+import java.util.Collections;
|
|
|
|
+import java.util.HashSet;
|
|
|
|
+import java.util.Set;
|
|
|
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
|
+import org.slf4j.Logger;
|
|
|
|
+import org.slf4j.LoggerFactory;
|
|
import org.springframework.web.servlet.HandlerInterceptor;
|
|
import org.springframework.web.servlet.HandlerInterceptor;
|
|
|
|
|
|
import com.hb.proj.utils.JacksonUtils;
|
|
import com.hb.proj.utils.JacksonUtils;
|
|
@@ -17,11 +23,21 @@ import jakarta.servlet.http.HttpServletResponse;
|
|
*
|
|
*
|
|
*/
|
|
*/
|
|
public class APICallInterceptor implements HandlerInterceptor {
|
|
public class APICallInterceptor implements HandlerInterceptor {
|
|
|
|
+
|
|
|
|
+ private static Logger logger=LoggerFactory.getLogger(APICallInterceptor.class);
|
|
|
|
+
|
|
|
|
+ private static Set<String> EXCLUDE_PATHS=null;
|
|
|
|
+
|
|
|
|
+ public APICallInterceptor(String excludePath) {
|
|
|
|
+ if(StringUtils.isNotBlank(excludePath)) {
|
|
|
|
+ String[] ep=excludePath.split(",");
|
|
|
|
+ EXCLUDE_PATHS=Collections.unmodifiableSet(new HashSet<>(Arrays.asList(ep)));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
|
|
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
|
|
throws Exception {
|
|
throws Exception {
|
|
-
|
|
|
|
if(!checkAPIAuth(request)) {
|
|
if(!checkAPIAuth(request)) {
|
|
writeToResponse(response,JacksonUtils.getJSON(RespVOBuilder.error("权限不足或登录已过期")));
|
|
writeToResponse(response,JacksonUtils.getJSON(RespVOBuilder.error("权限不足或登录已过期")));
|
|
return false;
|
|
return false;
|
|
@@ -32,10 +48,12 @@ public class APICallInterceptor implements HandlerInterceptor {
|
|
private boolean checkAPIAuth(HttpServletRequest request) {
|
|
private boolean checkAPIAuth(HttpServletRequest request) {
|
|
|
|
|
|
String reqUri=request.getRequestURI();
|
|
String reqUri=request.getRequestURI();
|
|
- String contextPath=request.getContextPath();
|
|
|
|
|
|
+ reqUri=reqUri.replaceFirst(request.getContextPath(), "");
|
|
|
|
|
|
- System.out.println(reqUri);
|
|
|
|
- System.out.println(reqUri.replaceFirst(contextPath, ""));
|
|
|
|
|
|
+ if(isExcludePath(reqUri)) {
|
|
|
|
+ logger.debug("该请求地址为排除地址:"+reqUri);
|
|
|
|
+ return true;
|
|
|
|
+ }
|
|
|
|
|
|
|
|
|
|
String token=request.getHeader(CacheConfig.TOKEN_HEADER_NAME);
|
|
String token=request.getHeader(CacheConfig.TOKEN_HEADER_NAME);
|
|
@@ -50,6 +68,22 @@ public class APICallInterceptor implements HandlerInterceptor {
|
|
return accessToken.verify(reqUri);
|
|
return accessToken.verify(reqUri);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+
|
|
|
|
+ private boolean isExcludePath(String path)
|
|
|
|
+ {
|
|
|
|
+ if(EXCLUDE_PATHS==null||EXCLUDE_PATHS.size()==0){
|
|
|
|
+ return false;
|
|
|
|
+ }
|
|
|
|
+ for(String pth : EXCLUDE_PATHS)
|
|
|
|
+ {
|
|
|
|
+ if(path.indexOf(pth)>=0)
|
|
|
|
+ {
|
|
|
|
+ return true;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return false;
|
|
|
|
+ }
|
|
|
|
+
|
|
private void writeToResponse(HttpServletResponse response,String message){
|
|
private void writeToResponse(HttpServletResponse response,String message){
|
|
PrintWriter out=null;
|
|
PrintWriter out=null;
|
|
try {
|
|
try {
|
|
@@ -67,7 +101,7 @@ public class APICallInterceptor implements HandlerInterceptor {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
-
|
|
|
|
|
|
+
|
|
|
|
|
|
|
|
|
|
}
|
|
}
|