diff --git a/tlias-web-management/src/main/java/com/inmind/filter/DemoFilter.java b/tlias-web-management/src/main/java/com/inmind/filter/DemoFilter.java index 1339fdf..d0a9bb4 100644 --- a/tlias-web-management/src/main/java/com/inmind/filter/DemoFilter.java +++ b/tlias-web-management/src/main/java/com/inmind/filter/DemoFilter.java @@ -7,7 +7,7 @@ import javax.servlet.annotation.WebFilter; import java.io.IOException; @Slf4j -@WebFilter(urlPatterns = "/*")//标识为过滤器组件,拦截所有请求 +//@WebFilter(urlPatterns = "/*")//标识为过滤器组件,拦截所有请求 public class DemoFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { @@ -18,9 +18,12 @@ public class DemoFilter implements Filter { //拦截到请求之后,调用多次 @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { - log.info("doFilter方法,过滤器的拦截方法执行了"); +// log.info("doFilter方法,过滤器的拦截方法执行了"); + log.info("doFilter方法,放行前的逻辑"); //放行API filterChain.doFilter(servletRequest,servletResponse); + + log.info("doFilter方法,放行后的逻辑"); } @Override diff --git a/tlias-web-management/src/main/java/com/inmind/filter/EbcFilter.java b/tlias-web-management/src/main/java/com/inmind/filter/EbcFilter.java new file mode 100644 index 0000000..1b3bbfe --- /dev/null +++ b/tlias-web-management/src/main/java/com/inmind/filter/EbcFilter.java @@ -0,0 +1,18 @@ +package com.inmind.filter; + +import lombok.extern.slf4j.Slf4j; + +import javax.servlet.*; +import javax.servlet.annotation.WebFilter; +import java.io.IOException; + +//@WebFilter(urlPatterns = "/*") +@Slf4j +public class EbcFilter implements Filter { + @Override + public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { + log.info("AbcFilter 放行前的逻辑"); + filterChain.doFilter(servletRequest,servletResponse);//放行 + log.info("AbcFilter 放行后的逻辑"); + } +} diff --git a/tlias-web-management/src/main/java/com/inmind/filter/LoginCheckFilter.java b/tlias-web-management/src/main/java/com/inmind/filter/LoginCheckFilter.java new file mode 100644 index 0000000..9e6a98c --- /dev/null +++ b/tlias-web-management/src/main/java/com/inmind/filter/LoginCheckFilter.java @@ -0,0 +1,55 @@ +package com.inmind.filter; + + +import com.inmind.utils.JwtUtils; +import lombok.extern.slf4j.Slf4j; +import org.springframework.util.StringUtils; + +import javax.servlet.*; +import javax.servlet.annotation.WebFilter; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + +@Slf4j +@WebFilter(urlPatterns = "/*") +public class LoginCheckFilter implements Filter { + @Override + public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { + //1.获取url + HttpServletRequest request = (HttpServletRequest) servletRequest; + HttpServletResponse response = (HttpServletResponse) servletResponse; + + String url = request.getRequestURI();//localhost:8080/login localhost:8080/emps/1 + //2.判断是否包含login,如果是登录接口,直接放行 + if (url.contains("login")) { + //放行 + filterChain.doFilter(servletRequest,servletResponse); + return;//放行后回到该方法中,登录接口,以下代码,不执行。 + } + + //3.获取请求头中的令牌(token) + String jwt = request.getHeader("token"); + + //4.判断令牌是否存在,不存在,直接返回错误结果(未登录) + if (!StringUtils.hasLength(jwt)) { + //todo 没有令牌,返回错误结果 + log.info("没有令牌,返回错误结果"); + return; + } + + //5.解析令牌,如果解析失败,直接返回错误结果(未登录) + try { + JwtUtils.parseJWT(jwt); + } catch (Exception e) { + //todo 令牌解析失败,返回错误结果 + log.info("令牌解析失败,返回错误结果"); + return; + } + + //6.放行 + log.info("令牌合法,放行"); + filterChain.doFilter(servletRequest,servletResponse); + + } +}