通过前面的文章,我们一步步实现了前后端分离模式下的基于token实现系统权限验证
第二十四章:整合SpringSecurity之最简登录及方法鉴权
第二十五章:整合SpringSecurity之基于数据库实现登录鉴权
第二十六章:整合SpringSecurity之前后端分离使用JSON格式交互
第二十七章:整合SpringSecurity之前后端分离使用Token实现登录鉴权
第二十八章:整合SpringSecurity之前后端分离使用JWT实现登录鉴权
也实现了对 Swagger 的集成
第十一章:整合Swagger2自动生成API文档
通过 Swagger 提供的网页,我们可以直接对后台接口实现单元测试,但是在前后端分离的项目中,请求时需要附带鉴权使用的 token,否则会被系统拒绝访问。
所以本文要解决的就是,使用 Swagger2 进行单元测试时,怎么传递 Token 的问题。
目标
整合 SpringSecurity 实现使用 Swagger2 文档对后台接口进行测试,并传入Token。
操作步骤
一、方案一
配置 Swagger2
通过 globalOperationParameters 方法为接口添加参数
配置 SpringSecurity
SpringSecurity 默认会将 Swagger-UI 的网页拦截,所以要访问 Swagger2 的接口文档,需要去掉拦截。
编写接口
验证
通过地址 http://localhost:8080/swagger-ui.html 访问 Swagger2 接口文档,选择上一步编写的测试接口,点击 Try it out,如下图所示,可以看到 Authorization 变成了可输入项。
我们什么也不输入,直接点击 Execute 按钮接交请求,结果返回如下,请求被 AuthenticationEntryPoint 拦截,说明当前用户未登录。
使用 postman 访问 http://localhost:8080/login 进行登录,登录成功后会返回 token,将 token 的值填入 Authorization 输入项,再次接交,结果显示 测试成功,请求被放行。
二、升级方案
按上面的方法,测试一个接口没有问题,但是如果要测试很多接口,则需要在每一次测试时,手动填上 token 值,非常麻烦,有没有办法填写一次,所有接口都可以共用呢?
修改 Swagger2 注册
验证
通过地址 http://localhost:8080/swagger-ui.html 访问 Swagger2 接口文档,
如下图所示,原来的 Authorization 输入框消失了,出现的是右上角的 Authorize 按钮
点击按钮会出现一个弹窗,弹窗内可输入 Authorization
源码地址
本章源码 : https://gitee.com/gongm_24/spring-boot-tutorial.git