前言
上节教程我们整合了SpringSecurity,并且做了后端的登录功能,且登录成功可以获取到后端响应的JWT。这节教程我们来为后端加入一个JWT的认证过滤器,实现前端要想请求除了登录以外的接口,必须携带此token,否则不可访问的功能。
代码将会在文章最后提供
创建过滤器
如图,我们在多租户模块tenant下创建filter包,用于存放过滤器,然后创建TokenFilter继承OncePerRequestFilter,来重写doFilterInternal方法

可以看到,此过滤器中,我们主要是在获取请求头中的“token”,并且利用jwt工具类进行解析,解析成功则将用户的信息和权限构造为Security所需的Authentication对象,然后将此对象加入到Security的上下文中,最终放行请求。
添加过滤器
创建了过滤器,要想使用还需要加入我们的项目配置中,如下在ExtendAdapter中的http规则中将此过滤器添加到security的UsernamePasswordAuthenticationFilter之前。

测试过滤器思路与准备
这里测试过滤器主要是测试过滤器的拦截是否生效,以及拦截规则是否正确。
预期是如果用户没登录,访问别的接口应当被拦截。
如果用户登录成功了,并且在header携带了后端响应的jwt,那么访问别的接口应当是成功的。
创建一个简单的测试接口,在AuthController中创建一个test接口,如下
@GetMapping("/test")
public String test(){
return "test";
}

然后启动项目
正式测试
测试拦截
如图,我们不带任何参数的去访问/auth/test,发现被拦截响应403

测试登录后的访问
首先模拟登录获取到jwt,如图

将登录成功后返回的jwt放到我们去请求/auth/test接口时的header中,并且键名为token,可以看到,这里正确的响应了接口的信息

总结与源码
本章幽络源为项目添加了http请求的jwt认证过滤器,并且做了测试,可以看到是非常成功的。
本章源码=>https://pan.quark.cn/s/f48e0e9b5c50
如上为幽络源的6、幽络源微服务项目实战:后端JWT认证过滤器配置与添加与测试教程,如有疑问或对微服务感兴趣可加入我们的QQ群询问与交流:307531422

