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 }