登录拦截

复制代码
 1 /**
 2  * 检查用户是否登录
 3  */
 4 @Slf4j
 5 @WebFilter(filterName = "LoginCheckFilter", urlPatterns = "/*")
 6 public class LoginCheckFilter implements Filter {
 7 
 8     @Override
 9     public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
10 
11         HttpServletRequest request = (HttpServletRequest) servletRequest;
12         HttpServletResponse response = (HttpServletResponse) servletResponse;
13 
14         String requestURI = request.getRequestURI();
15         log.info("拦截到请求:{}",requestURI);
16 
17         String[] urls = new String[]{
18                 "/employee/login",
19                 "/employee/logout",
20                 "/backend/**",
21                 "front/**"
22         };
23 
24         boolean check = check(urls, requestURI);
25 
26         if (check || request.getSession().getAttribute("employee") != null) {
27             filterChain.doFilter(request, response);
28             return;
29         }
30         log.info("用户未登录");
31         response.getWriter().write(JSON.toJSONString(R.error("NOTLOGIN")));
32     }
33 
34     public boolean check(String[] urls, String requestURI) {
35         AntPathMatcher antPathMatcher = new AntPathMatcher();
36         for (String url : urls) {
37             boolean match = antPathMatcher.match(url, requestURI);
38             if (match) return true;
39         }
40         return false;
41     }
42 }
复制代码

 

posted @   LiRang2022  阅读(78)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示