6、幽络源微服务项目实战:后端JWT认证过滤器配置与添加与测试

6、幽络源微服务项目实战:后端JWT认证过滤器配置与添加与测试

前言

上节教程我们整合了SpringSecurity,并且做了后端的登录功能,且登录成功可以获取到后端响应的JWT。这节教程我们来为后端加入一个JWT的认证过滤器,实现前端要想请求除了登录以外的接口,必须携带此token,否则不可访问的功能。

代码将会在文章最后提供

创建过滤器

如图,我们在多租户模块tenant下创建filter包,用于存放过滤器,然后创建TokenFilter继承OncePerRequestFilter,来重写doFilterInternal方法

8004882b-3b9d-4df9-aa71-0b0dda1b76e9

可以看到,此过滤器中,我们主要是在获取请求头中的“token”,并且利用jwt工具类进行解析,解析成功则将用户的信息和权限构造为Security所需的Authentication对象,然后将此对象加入到Security的上下文中,最终放行请求。

添加过滤器

创建了过滤器,要想使用还需要加入我们的项目配置中,如下在ExtendAdapter中的http规则中将此过滤器添加到security的UsernamePasswordAuthenticationFilter之前。

8f0a94a1-8877-429b-80bd-137ced5103cd

测试过滤器思路与准备

这里测试过滤器主要是测试过滤器的拦截是否生效,以及拦截规则是否正确。

预期是如果用户没登录,访问别的接口应当被拦截。

如果用户登录成功了,并且在header携带了后端响应的jwt,那么访问别的接口应当是成功的。

创建一个简单的测试接口,在AuthController中创建一个test接口,如下

@GetMapping("/test")
public String test(){
    return "test";
}

8e583157-b4d3-4329-b6ad-f04ed601d6b0

然后启动项目

正式测试

测试拦截

如图,我们不带任何参数的去访问/auth/test,发现被拦截响应403

efa1f6a2-2deb-4618-8253-844b47f90f06

测试登录后的访问

首先模拟登录获取到jwt,如图

4e44fb1f-036f-46ce-8197-9d96ff58c6da

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

325a82c1-ed1b-4c34-a332-e9703068fc87

总结与源码

本章幽络源为项目添加了http请求的jwt认证过滤器,并且做了测试,可以看到是非常成功的。

本章源码=>https://pan.quark.cn/s/f48e0e9b5c50

如上为幽络源的6、幽络源微服务项目实战:后端JWT认证过滤器配置与添加与测试教程,如有疑问或对微服务感兴趣可加入我们的QQ群询问与交流:307531422

THE END
喜欢就支持一下吧
分享