什么作用
- 在我们使用JWT令牌进行身份验证的时候,需要用到拦截器。
- 在处理请求的不同阶段进行拦截和处理,然后去判断该请求是否满足***
- 拦截器是一种常见的AOP面向切面编程技术
InterceptorRegistry
-
拦截和处理请求。拦截器可以是实现了 HandlerInterceptor 接口的任意对象,例如身份验证拦截器、日志记录拦截器等。
-
配置拦截器的拦截路径:InterceptorRegistry 类提供了 addPathPatterns 方法,可以配置拦截器的拦截路径,即拦截哪些请求。可以使用 Ant 样式的 URL 路径模式来配置拦截路径,例如 /admin/** 表示拦截所有以 /admin/开头的请求。
-
配置拦截器的排除路径:InterceptorRegistry 类提供了 excludePathPatterns 方法,可以配置拦截器的排除路径,即哪些请求不需要被拦截。可以使用 Ant 样式的 URL 路径模式来配置排除路径,例如 /public/** 表示不拦截所有以 /public/ 开头的请求。
-
配置拦截器的执行顺序:InterceptorRegistry 类提供了 order 方法,可以配置拦截器的执行顺序。拦截器的执行顺序按照注册的顺序决定,可以使用 order 方法指定拦截器的执行顺序,数值越小的拦截器越先执行。
-
注册默认拦截器:InterceptorRegistry 类提供了 addInterceptor 方法的重载方法,可以注册 Spring Web 框架提供的默认拦截器,例如 LocaleChangeInterceptor、ThemeChangeInterceptor 等。
代码实现
@Autowired
private JwtTokenUserInterceptor jwtTokenUserInterceptor;
protected void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(jwtTokenUserInterceptor)
// 拦截以user开头的所有请求
.addPathPatterns("/user/**")
// 以下请求不用拦截:用户登录
.excludePathPatterns("/user/user/login")
}
参考
https://blog.youkuaiyun.com/zhoqua697/article/details/130868110