注:学习测试请拉取 master 分支,dev 是开发分支,有很多特性并不稳定(在项目根目录执行 git checkout master
)。
开源不易,点个 star 鼓励一下吧!
Sa-Token 是一个轻量级 Java 权限认证框架,主要解决:登录认证、权限认证、单点登录、OAuth2.0、分布式Session会话、微服务网关鉴权 等一系列权限相关问题。
Sa-Token 旨在以简单、优雅的方式完成系统的权限认证部分,以登录认证为例,你只需要:
// 会话登录,参数填登录人的账号id
StpUtil.login(10001);
无需实现任何接口,无需创建任何配置文件,只需要这一句静态代码的调用,便可以完成会话登录认证。
如果一个接口需要登录后才能访问,我们只需调用以下代码:
// 校验当前客户端是否已经登录,如果未登录则抛出 `NotLoginException` 异常
StpUtil.checkLogin();
在 Sa-Token 中,大多数功能都可以一行代码解决:
踢人下线:
// 将账号id为 10077 的会话踢下线
StpUtil.kickout(10077);
权限认证:
// 注解鉴权:只有具备 `user:add` 权限的会话才可以进入方法
@SaCheckPermission("user:add")
public String insert(SysUser user) {
// ...
return "用户增加";
}
路由拦截鉴权:
// 根据路由划分模块,不同模块不同鉴权
registry.addInterceptor(new SaInterceptor(handler -> {
SaRouter.match("/user/**", r -> StpUtil.checkPermission("user"));
SaRouter.match("/admin/**", r -> StpUtil.checkPermission("admin"));
SaRouter.match("/goods/**", r -> StpUtil.checkPermission("goods"));
SaRouter.match("/orders/**", r -> StpUtil.checkPermission("orders"));
SaRouter.match("/notice/**", r -> StpUtil.checkPermission("notice"));
// 更多模块...
})).addPathPatterns("/**");
当你受够 Shiro、SpringSecurity 等框架的三拜九叩之后,你就会明白,相对于这些传统老牌框架,Sa-Token 的 API 设计是多么的简单、优雅!
Sa-Token 目前主要五大功能模块:登录认证、权限认证、单点登录、OAuth2.0、微服务鉴权。
功能结构图:
Sa-Token-SSO 由简入难划分为三种模式,解决不同架构下的 SSO 接入问题:
系统架构 | 采用模式 | 简介 | 文档链接 |
---|---|---|---|
前端同域 + 后端同 Redis | 模式一 | 共享Cookie同步会话 | 文档、示例 |
前端不同域 + 后端同 Redis | 模式二 | URL重定向传播会话 | 文档、示例 |
前端不同域 + 后端 不同Redis | 模式三 | Http请求获取会话 | 文档、示例 |
c1.domain.com
、c2.domain.com
、c3.domain.com
[权限缓存与业务缓存分离]
的解决方案,详情戳:Alone独立Redis插件
Sa-OAuth2 模块分为四种授权模式,解决不同场景下的授权需求
授权模式 | 简介 |
---|---|
授权码(Authorization Code) | OAuth2.0 标准授权步骤,Server 端向 Client 端下放 Code 码,Client 端再用 Code 码换取授权 Token |
隐藏式(Implicit) | 无法使用授权码模式时的备用选择,Server 端使用 URL 重定向方式直接将 Token 下放到 Client 端页面 |
密码式(Password) | Client直接拿着用户的账号密码换取授权 Token |
客户端凭证(Client Credentials) | Server 端针对 Client 级别的 Token,代表应用自身的资源授权 |
详细参考文档:https://sa-token.cc/doc.html#/oauth2/readme
[ Snowy ]:国内首个国密前后分离快速开发平台,采用 Vue3 + AntDesignVue3 + Vite + SpringBoot + Mp + HuTool + SaToken。
[ RuoYi-Vue-Plus ]:重写RuoYi-Vue所有功能 集成 Sa-Token+Mybatis-Plus+Jackson+Xxl-Job+knife4j+Hutool+OSS 定期同步
[ RuoYi-Cloud-Plus ]:重写RuoYi-Cloud所有功能 整合 SpringCloudAlibaba Dubbo3.0 Sa-Token Mybatis-Plus MQ OSS ES Xxl-Job Docker 全方位升级 定期同步
[ EasyAdmin ]:一个基于SpringBoot2 + Sa-Token + Mybatis-Plus + Snakerflow + Layui 的后台管理系统,灵活多变可前后端分离,也可单体,内置代码生成器、权限管理、工作流引擎等
[ YC-Framework ]:致力于打造一款优秀的分布式微服务解决方案。
[ Pig-Satoken ]:重写 Pig 授权方式为 Sa-Token,其他代码不变。
更多开源案例可参考:Awesome-Sa-Token
[ OkHttps ]:轻量级 http 通信框架,API无比优雅,支持 WebSocket、Stomp 协议
[ Bean Searcher ]:专注高级查询的只读 ORM,使一行代码实现复杂列表检索!
[ Jpom ]:简而轻的低侵入式在线构建、自动部署、日常运维、项目监控软件。
[ TLog ]:一个轻量级的分布式日志标记追踪神器。
[ hippo4j ]:强大的动态线程池框架,附带监控报警功能。
[ hertzbeat ]:易用友好的开源实时监控告警系统,无需Agent,高性能集群,强大自定义监控能力。
[ Solon ]:一个更现代感的应用开发框架:更快、更小、更自由。
QQ交流群:837325627 点击加入
微信交流群:
(扫码添加微信,备注:sa-token,邀您加入群聊)
加入群聊的好处:
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
Activity
Community
Health
Trend
Influence
:Code submit frequency
:React/respond to issue & PR etc.
:Well-balanced team members and collaboration
:Recent popularity of project
:Star counts, download counts etc.