Spring Boot Security + JWT Token 的简单应用


版权声明
我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。

Spring Boot Security + JWT Token 的简单应用
前言
本文介绍如何在分离式前后端开发模式中,通过 Spring Boot Security 和 JWT 实现身份验证和权限管理。后端基于 Spring Boot + MyBatis-Plus,前端采用 Vue2 + Axios + Element。
主要目标是实现用户注册与登录功能,并根据用户权限控制资源访问。
Spring Boot 中的身份验证流程
采用 JWT 的身份验证流程,客户端访问受保护资源时需在 HTTP 授权头中携带合法的 JWT。通过 Spring Security 的配置类进行权限管理,包括以下核心组件:
- WebSecurityConfig: 配置安全规则,如 CORS、CSRF、会话管理。
- UserDetailsService: 加载用户详细信息,用于身份验证与授权。
- JwtUtils: 提供 JWT 的生成、解析和验证方法。
- AuthTokenFilter: 过滤每个请求以验证 JWT。
- AuthenticationEntryPoint: 处理身份验证异常。
项目准备与表结构
项目文件结构包括 UserDetailsServiceImpl、AuthEntryPointJwt、AuthTokenFilter 等核心类,以及 application.yml 配置文件。
通过 MyBatisX 插件,根据数据库表生成代码。表结构设计包括用户表、角色表、权限表及其关联关系。
数据库示例数据展示了用户与角色、权限的关联关系。
关键实现步骤
1. Spring Security 配置
创建 WebSecurityConfig 类并配置安全规则,启用基于 JWT 的会话管理和资源保护。
2. JWT 工具类
实现 JwtUtil 类,用于创建和解析 JWT,支持自定义 payload。
3. 请求过滤器
AuthTokenFilter 类处理每个请求,从授权头提取并验证 JWT,同时设置用户身份信息。
4. 身份验证异常处理
AuthEntryPointJwt 类捕获身份验证错误,并返回标准化的错误响应。
用户注册与登录
实现 AuthController 控制器,提供注册(/api/auth/signup)和登录(/api/auth/signin)功能:
- 注册新用户时检查用户名是否已存在,并保存用户及其角色信息。
- 用户登录时验证用户名和密码,生成 JWT 并返回给客户端。
测试与结果
通过 Postman 测试注册与登录功能,访问受保护资源需携带 JWT。未登录时资源不可访问,登录后可通过 JWT 访问。
本文详细展示了基于 Spring Security 和 JWT 的身份验证实现,希望能帮助读者理解应用架构并应用到项目中。
代码地址
springboot葵花宝典



白皮书上线