@ServletComponentScan
@WebFilter("/*")
public class LoginFilter implements Filter {
@Override
public void destroy() {
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException {
//0.强转两个对象
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse resp = (HttpServletResponse) response;
//请在此处填写代码
HttpSession session = req.getSession();
Object name = session.getAttribute("name");
String uri = req.getRequestURI();
//如果name不为null就代表登入了,可以放行,静态资源也放行
if (name != null) {
chain.doFilter(req, resp);
} else if (uri.contains("css") || uri.contains("images") || uri.contains("static") || uri.contains("pages")
|| uri.contains("plugins") || uri.contains("index.html") || uri.contains("login")) {
chain.doFilter(req, resp);
}else{
//2.2:没有登录:跳转到登录页面index.html
//如果当前请求不是ajax请求 就直接跳转到登录页面
String XRequested = req.getHeader("X-Requested-With");
if (!"XMLHttpRequest".equals(XRequested)) {
resp.sendRedirect("/index.html");
return;
}
}
//如果当前请求是ajax请求 使用401状态码提示需要登录认证 跳转到登录页面
resp.setStatus(401);
}
@Override
public void init(FilterConfig config) throws ServletException {
}
}
03-15
76
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)