1.1 目的
定义Jwt过滤器后,当用户是已登录状态时,在请求头中携带token便可访问相关网页。
1.2 思路
1. 定义JwtAuthenticationTokenFilter类继承Spring中的OncePerRuquestFilter,这样重写doFilterInternal方法便可以获取到前端发送的请求信息。
2.从请求头中获取token,根据Jwt中的解密方法进行解密得到UserId,根据UserId获取存储在Redis中的用户信息。将用户信息封装到Authentication对象中(因为要放到SecurityContextHolder必须是该对象),注意这里使用的构造方法必须是被授权的那个构造方法。
3.将封装后Authentication对象放到SecurityContextHolder中,因为后面的过滤器都是从该对象中获取用户信息。
4.在SecurityConfig中,配置http.addFilterBefore。添加过滤器并在UserPassFilter.class(简写的字节码)过滤器之前执行
1.3 过程实现
定义过滤器
配置类