1:项目代码结构 总览
绿色:最核心的代码
JwtTokenUtils:JwtToken的创建与使用
JwtAuthorizationFilter:自定义鉴权过滤器 获取Token信息到SecurityContextHolder
SecurityConfiguration:Spring-Security 使 SpringMVC 集成了 Spring Security 的 web 安全
红色:实体 常量 枚举
蓝色:调用主逻辑
黄色:Spring-Security的一些源码(可以不看)
2:项目逻辑 总览
JWT 实际上就是存储用户信息的Token
Spring Security 实际上就是就SpringMvc集成Web安全的一种鉴权手段
1:创建用户 用户信息存放到Mysql中
2:用户登录 JwtTokenUtils 使用用户信息 创建JWT 并存储到Redis中
3:用户调用 不放行接口 JwtAuthorizationFilter 把JWT的部分用户信息存储到SecurityContextHolder
4:SecurityContextHolder 中 用户信息提供给全局使用
5:SecurityConfiguration 进行真正意义上的鉴权过滤 确保仅该用户具有相关权限时才能调用接口
6:用户退出登录 在Redis删除对应的中JWT信息
3:注册用户
请求路径:http://127.0.0.1:7001/api/users/sign-up
请求方式:Post请求 设置为JSON请求格式
请求参数:{"userName":"HSJ","fullName":"我的昵称","password":123456}
Mysql数据库插入数据
4:用户登录
请求路径:http://127.0.0.1:7001/api/auth/login
请求方式:Post请求 设置为JSON请求格式
请求参数:{"userName":"HSJ","password":123456,"rememberMe":true}
Redis已经插入JWT数据
5:不带Token访问需要进行身份验证的资源
请求路径:http://127.0.0.1:7001/api/users/find/allUser
请求方式:Get请求 表单
请求参数:current=1 (当前页) size =1 (每页显示条数)
请求头:无
注意:状态码为401 不提供Token或者Token错误
6:携带正确的有权限的 Token访问需要进行身份验证的资源
请求路径:http://127.0.0.1:7001/api/users/find/allUser
请求方式:Get请求 表单
请求参数:current=1 (当前页) size =1 (每页显示条数)
请求头:Authorization
Bearer
eyJ0eXBlIjoiSldUIiwiYWxnIjoiSFMyNTYifQ.eyJpc3MiOiJIZVN1aUppbiIsInJvbCI6IlJPTEVf
VVNFUixST0xFX01BTkFHRVIiLCJqdGkiOiIxIiwic3ViIjoiSFNKIiwiaWF0IjoxNjIwMTUxMzA
4LCJleHAiOjE2MjA3NTYxMDh9.XL96qmlpkJCN6_wvwwMkATSvqT8xhceeZ_tZ298SjAM
7:携带正确的但没权限的 Token访问需要进行身份验证的资源
请求路径:http://127.0.0.1:7001/api/users/find/allUser
请求方式:Post请求 设置为JSON请求格式
请求参数:{"userName":"HSJ","fullName":"我是修改昵称啊"}
请求头:Authorization
Bearer
eyJ0eXBlIjoiSldUIiwiYWxnIjoiSFMyNTYifQ.eyJpc3MiOiJIZVN1aUppbiIsInJvbCI6IlJPTEVf
VVNFUixST0xFX01BTkFHRVIiLCJqdGkiOiIxIiwic3ViIjoiSFNKIiwiaWF0IjoxNjIwMTUxMzA
4LCJleHAiOjE2MjA3NTYxMDh9.XL96qmlpkJCN6_wvwwMkATSvqT8xhceeZ_tZ298SjAM
注意:状态码为403 代表该token 无权限进行该操作
项目连接
请配合项目代码食用效果更佳:
项目地址:
https://github.com/hesuijin/hesuijin-study-project
Git下载地址:
https://github.com.cnpmjs.org/hesuijin/hesuijin-study-project.git
spring-security-jwt-module 项目模块下
网友评论