1. 项目概述
若依框架(RuoYi)是一个基于Spring Boot的企业级快速开发平台,它整合了Spring Security、MyBatis、JWT等主流技术栈。其中,用户登录认证模块是整个系统的核心功能之一,也是开发者最常需要定制化的部分。本文将深入剖析若依框架中基于Spring Security的用户登录实现机制,通过源码级解析配合流程图解,帮助开发者全面掌握这套认证体系。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心架构设计
2.1 技术栈组成
若依的认证体系主要构建在以下技术组件上:
- Spring Security:提供认证和授权的基础框架
- JWT(JSON Web Token):实现无状态认证
- Redis:存储令牌和用户会话信息
- BCryptPasswordEncoder:密码加密存储方案
2.2 认证流程概览
典型登录流程包含以下关键步骤:
- 用户提交用户名/密码和验证码
- 服务端验证验证码有效性
- Spring Security进行身份认证
- 生成JWT令牌并返回客户端
- 后续请求携带令牌进行鉴权
3. 源码深度解析
3.1 登录入口 - SysLoginController
java复制@PostMapping("/login")
public AjaxResult login(@RequestBody LoginBody loginBody) {
String token = loginService.login(
loginBody.getUsername(),
loginBody.getPassword(),
loginBody.getCode(),
loginBody.getUuid()
);
return AjaxResult.success().put(Constants.TOKEN, token);
}
这是登录请求的入口方法,主要处理:
- 接收前端提交的登录参数
- 调用登录服务进行认证
- 返回生成的JWT令牌
3.2 核心认证逻辑 - SysLoginService
java复制public String login(String username, String password, String code, String uuid) {
// 验证码校验
validateCaptcha(username, code, uuid);
// 登录前置检查(账号状态等)
loginPreCheck(username, password);
// Spring Security认证流程
Authentication authentication = authenticate(username, password);
// 记录登录日志
recordLoginLog(u
