springsecurity整合springboot springsecurity整合token_springsecurity登录验证


通过前面的文章,我们一步步实现了前后端分离模式下的基于token实现系统权限验证

第二十四章:整合SpringSecurity之最简登录及方法鉴权

第二十五章:整合SpringSecurity之基于数据库实现登录鉴权

第二十六章:整合SpringSecurity之前后端分离使用JSON格式交互

第二十七章:整合SpringSecurity之前后端分离使用Token实现登录鉴权

第二十八章:整合SpringSecurity之前后端分离使用JWT实现登录鉴权

也实现了对 Swagger 的集成

第十一章:整合Swagger2自动生成API文档

通过 Swagger 提供的网页,我们可以直接对后台接口实现单元测试,但是在前后端分离的项目中,请求时需要附带鉴权使用的 token,否则会被系统拒绝访问。

所以本文要解决的就是,使用 Swagger2 进行单元测试时,怎么传递 Token 的问题。

目标

整合 SpringSecurity 实现使用 Swagger2 文档对后台接口进行测试,并传入Token。

操作步骤

一、方案一

配置 Swagger2

通过 globalOperationParameters 方法为接口添加参数


springsecurity整合springboot springsecurity整合token_springsecurity文档_02


配置 SpringSecurity

SpringSecurity 默认会将 Swagger-UI 的网页拦截,所以要访问 Swagger2 的接口文档,需要去掉拦截。


springsecurity整合springboot springsecurity整合token_springsecurity登录验证_03


编写接口


springsecurity整合springboot springsecurity整合token_springsecurity文档_04


验证

通过地址 http://localhost:8080/swagger-ui.html 访问 Swagger2 接口文档,选择上一步编写的测试接口,点击 Try it out,如下图所示,可以看到 Authorization 变成了可输入项。


springsecurity整合springboot springsecurity整合token_springsecurity文档_05


我们什么也不输入,直接点击 Execute 按钮接交请求,结果返回如下,请求被 AuthenticationEntryPoint 拦截,说明当前用户未登录。


springsecurity整合springboot springsecurity整合token_swagger怎么看接口数量_06


使用 postman 访问 http://localhost:8080/login 进行登录,登录成功后会返回 token,将 token 的值填入 Authorization 输入项,再次接交,结果显示 测试成功,请求被放行。

二、升级方案

按上面的方法,测试一个接口没有问题,但是如果要测试很多接口,则需要在每一次测试时,手动填上 token 值,非常麻烦,有没有办法填写一次,所有接口都可以共用呢?

修改 Swagger2 注册


springsecurity整合springboot springsecurity整合token_springsecurity文档_07


验证

通过地址 http://localhost:8080/swagger-ui.html 访问 Swagger2 接口文档,

如下图所示,原来的 Authorization 输入框消失了,出现的是右上角的 Authorize 按钮


springsecurity整合springboot springsecurity整合token_springsecurity文档_08


点击按钮会出现一个弹窗,弹窗内可输入 Authorization


springsecurity整合springboot springsecurity整合token_springsecurity文档_09


源码地址

本章源码 : https://gitee.com/gongm_24/spring-boot-tutorial.git