登录拦截
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 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构