笔记——了解项目RuoYi-Cloud-Plus是怎么使用Sa-Token,实现登录认证相关逻辑

1、概述

最近在学习码云上的项目RuoYi-Cloud-Plus,通过观看代码确定它是如何把Sa-Token集成到SpringCloud上的。

主要涉及到ruoyi-auth,ruoyi-gateway,ruoyi-system三个服务,主要用到了ruoyi-common-redis,ruoyi-common-satoken,ruoyi-common-security三个公共子模块。

2、服务与公用模块介绍

ruoyi-auth服务主要有获取验证码、登录、注册等接口;ruoyi-gateway是网关,把http请求转发给其它服务;ruoyi-system服务包含基本系统管理等接口。

ruoyi-common-redis模块主要是配置redis,提供RedisUtils等工具类;ruoyi-common-satoken模块主要对Sa-Token进行配置,提供LoginHelper类;ruoyi-common-security设置Sa-Token拦截器,被服务uoyi-auth,ruoyi-system使用,使得不能直接通过服务的IP地址和端口号访问除ruoyi-gateway外的其它服务,而必须通过ruoyi-gateway网关访问服务。

2、依赖

微服务ruoyi-auth,ruoyi-system用到了依赖cn.dev33:sa-token-spring-boot3-starter,ruoyi-gateway用到了依赖cn.dev33:sa-token-reactor-spring-boot3-starter。

此外,ruoyi-gateway还设置了过滤器SaReactorFilt

RuoYi-Cloud-Plus 项目中,Sa-Token 被用于实现登录认证和身份验证功能,其核心机制包括对 Sa-Token 的持久化配置、拦截器设置以及通过工具类封装简化使用流程。 ### 集成 Sa-Token 实现登录与身份验证 1. **Sa-Token 持久化配置** 在 Spring Boot 的配置类中,通过自定义 `saTokenDao` Bean 来注入 `PlusSaTokenDao`,以实现 Sa-Token 框架的持久层接口。此配置使用了框架自带的 `RedisUtils` 工具类进行数据存储管理,确保协议统一性。 ```java @Bean public SaTokenDao saTokenDao() { return new PlusSaTokenDao(); } ``` 这种方式将 Sa-TokenToken 存储逻辑交由 Redis 管理,提高了系统的可扩展性和性能[^1]。 2. **Sa-Token 拦截器配置** RuoYi-Cloud-Plus 通过在模块 `ruoyi-common-security` 中配置 Sa-Token 拦截器,实现了对服务访问的安全控制。该拦截器被应用于 `ruoyi-auth` 和 `ruoyi-system` 服务,防止直接通过 IP 地址和端口号访问这些服务,除网关 `ruoyi-gateway` 外,其他服务必须经过网关访问,从而增强安全性[^3]。 3. **登录认证逻辑封装** 项目中的 `ruoyi-common-satoken` 模块提供了 `LoginHelper` 类,用于封装与 Sa-Token 相关登录认证逻辑。此类负责处理用户登录Token 生成、权限校验等操作,开发者可以通过调用该类的方法快速完成身份验证相关功能。 4. **依赖引入与模块划分** - `ruoyi-common-redis` 模块主要提供 Redis 的配置及 `RedisUtils` 工具类,用于支持 Sa-Token 的持久化需求。 - `ruoyi-common-satoken` 模块专注于 Sa-Token 的配置和登录逻辑封装。 - `ruoyi-common-security` 模块则用于安全控制,包含 Sa-Token 的拦截器配置。 ### 示例代码:使用 LoginHelper 登录认证 ```java // 用户登录示例 public void login(String username, String password) { // 校验用户名密码是否正确 if (validateUser(username, password)) { // 登录用户 LoginHelper.login(username); } else { throw new AuthenticationException("用户名或密码错误"); } } // 校验用户信息方法(模拟) private boolean validateUser(String username, String password) { // 实际应查询数据库或缓存 return "admin".equals(username) && "123456".equals(password); } ``` ### 总结 RuoYi-Cloud-Plus 利用 Sa-Token 提供的灵活 API 结合 Redis 实现了高效的登录认证机制,并通过模块化设计提升了项目的可维护性和可扩展性。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值