浏览代码

只拦截 admin 请求

魏熙美 5 年前
父节点
当前提交
7220986120
共有 1 个文件被更改,包括 17 次插入2 次删除
  1. 17
    2
      foyo-service/src/main/java/com/huiju/foyo/filter/FoyoFilter.java

+ 17
- 2
foyo-service/src/main/java/com/huiju/foyo/filter/FoyoFilter.java 查看文件

@@ -4,6 +4,8 @@ import com.huiju.foyo.model.SysUser;
4 4
 import com.huiju.foyo.session.SessionLoad;
5 5
 import com.huiju.foyo.session.UserControl;
6 6
 import org.springframework.stereotype.Component;
7
+import org.springframework.util.AntPathMatcher;
8
+import org.springframework.util.PathMatcher;
7 9
 
8 10
 import javax.servlet.*;
9 11
 import javax.servlet.http.HttpServletRequest;
@@ -17,22 +19,35 @@ import java.io.IOException;
17 19
 @Component
18 20
 public class FoyoFilter implements Filter {
19 21
 
22
+    private PathMatcher pathMatcher = new AntPathMatcher();
23
+
24
+    /**
25
+     * 重定向路径
26
+     */
27
+    private static final String TO_LOGIN = "/admin/toLogin";
28
+
20 29
     @Override
21 30
     public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
22 31
         HttpServletRequest request = (HttpServletRequest) servletRequest;
23
-        HttpServletResponse response = (HttpServletResponse) servletResponse;
32
+        // HttpServletResponse response = (HttpServletResponse) servletResponse;
24 33
 
25 34
         if (request.getRequestURI().equals("/admin/login")) {
26 35
             filterChain.doFilter(servletRequest, servletResponse);
27 36
             return;
28 37
         }
29 38
 
39
+        // 非 admin 请求直接放过
40
+        if (!pathMatcher.match("/admin/**", request.getRequestURI()) ) {
41
+            filterChain.doFilter(servletRequest, servletResponse);
42
+            return;
43
+        }
44
+
30 45
         SysUser user = SessionLoad.getUser();
31 46
         if (null == user) {
32 47
             user = (SysUser) request.getSession().getAttribute(UserControl.SESSION_USER);
33 48
             if (null == user) {
34 49
                 // 重定向登录
35
-                request.getRequestDispatcher("/admin/toLogin").forward(servletRequest, servletResponse);
50
+                request.getRequestDispatcher(TO_LOGIN).forward(servletRequest, servletResponse);
36 51
                 return;
37 52
             }
38 53
         }