tlias管理系统-过滤器Filter实现登录校验功能 ----1
This commit is contained in:
@@ -7,7 +7,7 @@ import javax.servlet.annotation.WebFilter;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@WebFilter(urlPatterns = "/*")//标识为过滤器组件,拦截所有请求
|
//@WebFilter(urlPatterns = "/*")//标识为过滤器组件,拦截所有请求
|
||||||
public class DemoFilter implements Filter {
|
public class DemoFilter implements Filter {
|
||||||
@Override
|
@Override
|
||||||
public void init(FilterConfig filterConfig) throws ServletException {
|
public void init(FilterConfig filterConfig) throws ServletException {
|
||||||
@@ -18,9 +18,12 @@ public class DemoFilter implements Filter {
|
|||||||
//拦截到请求之后,调用多次
|
//拦截到请求之后,调用多次
|
||||||
@Override
|
@Override
|
||||||
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
|
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
|
||||||
log.info("doFilter方法,过滤器的拦截方法执行了");
|
// log.info("doFilter方法,过滤器的拦截方法执行了");
|
||||||
|
log.info("doFilter方法,放行前的逻辑");
|
||||||
//放行API
|
//放行API
|
||||||
filterChain.doFilter(servletRequest,servletResponse);
|
filterChain.doFilter(servletRequest,servletResponse);
|
||||||
|
|
||||||
|
log.info("doFilter方法,放行后的逻辑");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -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 放行后的逻辑");
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user