1. 创建过滤器实现类
package com.example.demo2.authorize.filter;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;
/**
* @Author: ***
* @Description: 权限验证过滤器
* @CreateDate: 2021/5/21 11:56
*/
//标识filter
@Slf4j
@WebFilter(filterName = "AuthFilter", urlPatterns = {"/*"})
public class AuthFilter implements Filter {
//忽略请求地址
// public List<String> ignoreUrl = Collections.singletonList("/*/*");
@Override
public void init(FilterConfig filterConfig) {
System.out.println("AuthenticationFilter---->init()");
log.info("过滤器初始化");
}
@Override
public void doFilter(
ServletRequest request,
ServletResponse response,
FilterChain filterChain
) throws IOException, ServletException {
log.info("过滤器处理中");
long start = System.currentTimeMillis();
filterChain.doFilter(request, response);
System.out.println("LogFilter2 Execute cost=" + (System.currentTimeMillis() - start));
}
@Override
public void destroy() {
Filter.super.destroy();
log.info("过滤器销毁");
}
}
上述代码中,有3处需要注意:
1. 必须添加 WebFilter 注解,指定 url 和 过滤器名称,一般过滤器名和当前类名一致
2. implements Filter 必须实现 Filter 类
3. 覆写3大函数:init、destroy、doFilter
2. 将过滤器实现类添加要应用扫描下
package com.example.demo2;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;
@SpringBootApplication
// 主要是下面这一行,括号里面就是步骤1中的自定义的过滤器实现类所在的包
@ServletComponentScan("com.example.demo2.authorize.filter")
public class Demo2Application {
public static void main(String[] args) {
SpringApplication.run(Demo2Application.class, args);
}
}
上述代码主要是 第10行:
@ServletComponentScan("com.example.demo2.authorize.filter")
参数是 步骤1 中创建的过滤器所在的包