package com.whyc.filter;
|
|
import com.whyc.pojo.User;
|
import lombok.extern.slf4j.Slf4j;
|
|
import javax.servlet.*;
|
import javax.servlet.annotation.WebFilter;
|
import javax.servlet.annotation.WebInitParam;
|
import javax.servlet.http.HttpServletRequest;
|
import java.io.IOException;
|
import java.io.PrintWriter;
|
|
@Slf4j
|
@WebFilter(filterName = "loginFilter",urlPatterns = "/*",initParams = {
|
@WebInitParam(name = "exclusions",value = "*.css,*.js")
|
})
|
//@WebInitParam(name = "exclusions",value = "*.css,*.js")
|
public class LoginFilter implements Filter {
|
|
private String exclusions = "";
|
|
public void destroy() {
|
}
|
|
public void doFilter(ServletRequest req, ServletResponse resp,
|
FilterChain chain) throws IOException, ServletException {
|
HttpServletRequest request=(HttpServletRequest)req;
|
|
String URL=request.getRequestURI();
|
String[] uri=request.getRequestURI().split("/");
|
String source="";
|
if(uri.length>0) {
|
source = uri[uri.length - 1];
|
}
|
String suffix = source.substring(source.indexOf(".")+1);
|
User user=(User)request.getSession().getAttribute("user");
|
|
//不拦截swagger的资源请求,以及登录请求
|
if(URL.indexOf("swagger-resources")>-1 ||URL.indexOf("swagger-ui")>-1 ||URL.indexOf("v2/api-docs")>-1||URL.indexOf("login")>-1){
|
chain.doFilter(req,resp);
|
}
|
//不拦截静态资源css/js
|
else if(exclusions.indexOf(suffix)>-1){
|
chain.doFilter(req,resp);
|
}
|
else if(user!=null){
|
chain.doFilter(req, resp);
|
}else{
|
PrintWriter out=resp.getWriter();
|
out.print("<script charset='UTF-8'>window.location.href='index.html'</script>");
|
}
|
}
|
|
public void init(FilterConfig config) throws ServletException {
|
exclusions =config.getInitParameter("exclusions");
|
}
|
|
}
|