权限控制
# 权限控制方案
在 yt4j 项目中,我们使用了 Sa-Token 作为权限控制框架。
# 为什么选择 Sa-Token?
最初我们采用的是 Spring Security + JWT 的组合,但在实际开发中逐渐发现一些问题:
- 配置复杂,调试成本高;
- 权限信息最终还是落地到 Redis,没有发挥 JWT 的无状态优势;
- 某些场景下 Spring Security 的扩展性不如预期。
基于这些考虑,我们调研了 JustAuthPlus 和 Sa-Token,最终选择了 Sa-Token,主要原因是:
- 上手简单,API 友好;
- 支持丰富的登录模式和权限验证方式;
- 对于我们现有的 Redis 结构兼容性好;
- 更加轻量,适合中小型系统的权限需求。
# Sa-Token 的使用实践
# 白名单配置的设计
在项目中,我们将权限控制拆分到了不同模块:
gateway
网关服务yt4j-sa-token
权限处理模块
为了统一权限放行规则,我们分别在两个项目中都定义了「白名单配置类」。原因如下:
- 解耦设计:
gateway
与后端服务使用的是不同的模型(Reactor 与 Servlet),Sa-Token 也区分了对应的依赖包; - 避免配置冲突:各自维护独立的白名单列表,更符合模块化设计思路;
- 便于单独扩展:若未来需要独立部署或接入其他服务,不会造成权限逻辑混乱。
上次更新: 2025/04/22, 08:45:24