news 2026/3/4 13:23:05

Spring Boot 用户认证全攻略:Access Token + Refresh Token 实现详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Spring Boot 用户认证全攻略:Access Token + Refresh Token 实现详解

基于 Spring Boot + Spring Security + JWT,本文提供一个完整的 Access Token + Refresh Token 认证实现方案,涵盖从登录认证、刷新 Token、登出,到安全优化的全流程,适用于生产环境。


一、架构概览

项目结构

src/main/java/com/example/auth/ ├── AuthApplication.java # 主应用类 ├── config/ │ ├── SecurityConfig.java # 安全配置 │ └── WebConfig.java # Web配置 ├── controller/ │ └── AuthController.java # 认证控制器 ├── dto/ │ ├── LoginRequest.java # 登录请求DTO │ ├── TokenRefreshRequest.java # Token刷新请求DTO │ └── ApiResponse.java # 统一响应DTO ├── entity/ │ ├── User.java # 用户实体 │ └── RefreshToken.java # Refresh Token实体 ├── repository/ │ ├── UserRepository.java # 用户仓库 │ └── RefreshTokenRepository.java # Refresh Token仓库 ├── security/ │ ├── JwtTokenProvider.java # JWT Token提供者 │ ├── JwtAuthenticationFilter.java # JWT认证过滤器 │ └── UserPrincipal.java # 用户主体 ├── service/ │ ├── UserService.java # 用户服务 │ ├── RefreshTokenService.java # Refresh Token服务 │ └── AuthService.java # 认证服务 └── exception/ ├── TokenRefreshException.java # Token刷新异常 └── GlobalExceptionHandler.java # 全局异常处理

二、核心实现

1. 实体类

用户和 Refresh Token 实体:

@Entity @Table(name = "users") public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(unique = true, nullable = false) private String username; private String password; private String email; private String role = "USER"; private boolean enabled = true; // getters/setters ... }
@Entity @Table(name = "refresh_tokens") public class RefreshToken { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(nullable = false, unique = true) private String token; @ManyToOne(fetch = FetchType.LAZY) private User user; @Column(nullable = false) private Lo
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/4 5:23:57

TaxInvoice税务申报准备:进项销项发票批量识别

税务申报准备中的智能进化:基于HunyuanOCR的进项销项发票批量识别实践 在企业财务日常中,每月初最让人头疼的莫过于堆积如山的进项与销项发票。一张张扫描、手动录入系统、核对金额、检查税码——这个过程不仅耗时费力,还极易因疲劳或格式差异…

作者头像 李华
网站建设 2026/2/28 17:57:01

ConstructionDrawing工程变更:图纸更新前后文字对比检测

图纸变更中的文字对比检测:基于腾讯混元OCR的智能解决方案 在大型建筑项目或工业设计流程中,一张施工图纸往往经历数十次修改。某次现场巡检发现,结构图上的钢筋标注从“Φ12150”悄然变更为“Φ14150”,看似微小的字符调整&#…

作者头像 李华
网站建设 2026/3/3 22:59:59

ICDAR数据集测试得分:公开榜单上的实际排名查询

ICDAR数据集测试得分:公开榜单上的实际排名查询 在文档数字化进程不断加速的今天,如何让机器“读懂”图像中的文字,早已不再是一个简单的技术问题。从银行柜台的身份核验到跨境电商的商品说明翻译,从发票自动录入到视频字幕提取&a…

作者头像 李华
网站建设 2026/3/4 0:36:39

Memcached容错处理机制揭秘:面试必看!

文章目录Memcached如何处理容错?引言Memcached的基本原理数据分片一致性哈希容错机制的核心1. 数据冗余配置示例:设置复制因子2. 故障检测配置示例:启用故障检测3. 自动恢复配置示例:启用自动恢复4. 负载均衡配置示例:…

作者头像 李华