<p align="center">
<img alt="logo" src="https://sa-token.dev33.cn/doc/logo.png" width="150" height="150">
</p>
<h1 align="center" style="margin: 30px 0 30px; font-weight: bold;">Sa-Token v1.29.0</h1>
<h4 align="center">一个轻量级 Java 权限认证框架,让鉴权变得简单、优雅!</h4>
<p align="center">
<a href="https://gitee.com/dromara/sa-token/stargazers"><img src="https://gitee.com/dromara/sa-token/badge/star.svg?theme=gvp"></a>
<a href="https://gitee.com/dromara/sa-token/members"><img src="https://gitee.com/dromara/sa-token/badge/fork.svg?theme=gvp"></a>
<a href="https://github.com/dromara/sa-token/stargazers"><img src="https://img.shields.io/github/stars/dromara/sa-token?style=flat-square&logo=GitHub"></a>
<a href="https://github.com/dromara/sa-token/network/members"><img src="https://img.shields.io/github/forks/dromara/sa-token?style=flat-square&logo=GitHub"></a>
<a href="https://github.com/dromara/sa-token/watchers"><img src="https://img.shields.io/github/watchers/dromara/sa-token?style=flat-square&logo=GitHub"></a>
<a href="https://github.com/dromara/sa-token/issues"><img src="https://img.shields.io/github/issues/dromara/sa-token.svg?style=flat-square&logo=GitHub"></a>
<a href="https://github.com/dromara/sa-token/blob/master/LICENSE"><img src="https://img.shields.io/github/license/dromara/sa-token.svg?style=flat-square"></a>
</p>
---
## 前言:
- [在线文档:http://sa-token.dev33.cn/](http://sa-token.dev33.cn/)
- 注:学习测试请拉取 master 分支,dev 为正在开发的分支,有很多特性并不稳定。
- 开源不易,点个 star 鼓励一下吧!
## Sa-Token 介绍
**Sa-Token** 是一个轻量级 Java 权限认证框架,主要解决:**`登录认证`**、**`权限认证`**、**`Session会话`**、**`单点登录`**、**`OAuth2.0`**、**`微服务网关鉴权`**
等一系列权限相关问题。
Sa-Token 的 API 设计非常简单,有多简单呢?以登录认证为例,你只需要:
``` java
// 在登录时写入当前会话的账号id
StpUtil.login(10001);
// 然后在需要校验登录处调用以下方法:
// 如果当前会话未登录,这句代码会抛出 `NotLoginException` 异常
StpUtil.checkLogin();
```
至此,我们已经借助 Sa-Token 完成登录认证!
此时的你小脑袋可能飘满了问号,就这么简单?自定义 Realm 呢?全局过滤器呢?我不用写各种配置文件吗?
没错,在 Sa-Token 中,登录认证就是如此简单,不需要任何的复杂前置工作,只需这一行简单的API调用,就可以完成会话登录认证!
当你受够 Shiro、SpringSecurity 等框架的三拜九叩之后,你就会明白,相对于这些传统老牌框架,Sa-Token 的 API 设计是多么的简单、优雅!
权限认证示例(只有具备 `user:add` 权限的会话才可以进入请求)
``` java
@SaCheckPermission("user:add")
@RequestMapping("/user/insert")
public String insert(SysUser user) {
// ...
return "用户增加";
}
```
将某个账号踢下线(待到对方再次访问系统时会抛出`NotLoginException`异常)
``` java
// 将账号id为 10001 的会话踢下线
StpUtil.kickout(10001);
```
在 Sa-Token 中,绝大多数功能都可以 **一行代码** 完成:
``` java
StpUtil.login(10001); // 标记当前会话登录的账号id
StpUtil.getLoginId(); // 获取当前会话登录的账号id
StpUtil.isLogin(); // 获取当前会话是否已经登录, 返回true或false
StpUtil.logout(); // 当前会话注销登录
StpUtil.kickout(10001); // 将账号为10001的会话踢下线
StpUtil.hasRole("super-admin"); // 查询当前账号是否含有指定角色标识, 返回true或false
StpUtil.hasPermission("user:add"); // 查询当前账号是否含有指定权限, 返回true或false
StpUtil.getSession(); // 获取当前账号id的Session
StpUtil.getSessionByLoginId(10001); // 获取账号id为10001的Session
StpUtil.getTokenValueByLoginId(10001); // 获取账号id为10001的token令牌值
StpUtil.login(10001, "PC"); // 指定设备类型登录,常用于“同端互斥登录”
StpUtil.kickout(10001, "PC"); // 指定账号指定设备类型踢下线 (不同端不受影响)
StpUtil.openSafe(120); // 在当前会话开启二级认证,有效期为120秒
StpUtil.checkSafe(); // 校验当前会话是否处于二级认证有效期内,校验失败会抛出异常
StpUtil.switchTo(10044); // 将当前会话身份临时切换为其它账号
```
即使不运行测试,相信您也能意会到绝大多数 API 的用法。
## Sa-Token 功能一览
- **登录认证** —— 单端登录、多端登录、同端互斥登录、七天内免登录
- **权限认证** —— 权限认证、角色认证、会话二级认证
- **Session会话** —— 全端共享Session、单端独享Session、自定义Session
- **踢人下线** —— 根据账号id踢人下线、根据Token值踢人下线
- **账号封禁** —— 指定天数封禁、永久封禁、设定解封时间
- **持久层扩展** —— 可集成Redis、Memcached等专业缓存中间件,重启数据不丢失
- **分布式会话** —— 提供jwt集成、共享数据中心两种分布式会话方案
- **微服务网关鉴权** —— 适配Gateway、ShenYu、Zuul等常见网关的路由拦截认证
- **单点登录** —— 内置三种单点登录模式:无论是否跨域、是否共享Redis,都可以搞定
- **OAuth2.0认证** —— 基于RFC-6749标准编写,OAuth2.0标准流程的授权认证,支持openid模式
- **二级认证** —— 在已登录的基础上再次认证,保证安全性
- **Basic认证** —— 一行代码接入 Http Basic 认证
- **独立Redis** —— 将权限缓存与业务缓存分离
- **临时Token验证** —— 解决短时间的Token授权问题
- **模拟他人账号** —— 实时操作任意用户状态数据
- **临时身份切换** —— 将会话身份临时切换为其它账号
- **前后台分离** —— APP、小程序等不支持Cookie的终端
- **同端互斥登录** —— 像QQ一样手机电脑同时在线,但是两个手机上互斥登录
- **多账号认证体系** —— 比如一个商城项目的user表和admin表分开鉴权
- **花式token生成** —— 内置六种Token风格,还可:自定义Token生成策略、自定义Token前缀
- **注解式鉴权** —— 优雅的将鉴权与业务代码分离
- **路由拦截式鉴权** —— 根据路由拦截鉴权,可适配restful模式
- **自动续签** —— 提供两种Token过期策略,灵活搭配使用,还可自动续签
- **会话治理** —— 提供方便灵活的会话查询接口
- **记住我模式** —— 适配[记住我]模式,重启浏览器免验证
- **密码加密** —— 提供密码加密模块,可快速MD5、SHA1、SHA256、AES、RSA加密
- **全局侦听器** —— 在用户登陆、注销、被踢下线等关键性操作时进行一些AOP操作
- **开箱即用** —— 提供SpringMVC、WebFlux等常见web框架starter集成包,真正的开箱即用
- **更多功能正在集成中...** —— 如有您有好想法或者建议,欢迎加群交流
## Sa-Token-SSO 单点登录
网上的单点登录教程大多以CAS流程为主,其实对于不同的系统架构,实现单点登录的步骤也大为不同,Sa-Token由简入难将其划分为三种模式:
| 系统架构 | 采用模式 | 简介 | 文档链接 |
| :-------- | :-------- | :-------- | :-------- |
| 前端同域 + 后端同 Redis | 模式一 | 共享Cookie同步会话 | [文档](http://sa-token.dev33.cn/doc/index.html#/sso/sso-type1)、[示例](https://gitee.com/dromara/sa-token/blob/master/sa-token-demo/sa-token-demo-sso1-client) |
| 前端不同域 + 后端同 Redis | 模式二 | URL重定向传播会话 | [文档](http://sa-token.dev33.cn/doc/index.html#/sso/sso-type2)、[示例](https://gitee.com/dromara/sa-token/blob/master/sa-token
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
这可能是史上功能最全的Java权限认证框架! Sa-Token 功能一览: 登录认证 —— 单端登录、多端登录、同端互斥登录、七天内免登录 权限认证 —— 权限认证、角色认证、会话二级认证 Session会话 —— 全端共享Session、单端独享Session、自定义Session 踢人下线 —— 根据账号id踢人下线、根据Token值踢人下线 账号封禁 —— 指定天数封禁、永久封禁、设定解封时间 持久层扩展 —— 可集成Redis、Memcached等专业缓存中间件,重启数据不丢失 分布式会话 —— 提供jwt集成、共享数据中心两种分布式会话方案 微服务网关鉴权 —— 适配Gateway、ShenYu、Zuul等常见网关的路由拦截认证 单点登录 —— 内置三种单点登录模式:无论是否跨域、是否共享Redis,都可以搞定 OAuth2.0认证 —— 基于RFC-6749标准编写,OAuth2.0标准流程的授权认证,支持openid模式 二级认证 —— 在已登录的基础上再次认证,保证安全性 Basic认证 —— 一行代码接入 Http Basic 认证 ......
资源推荐
资源详情
资源评论
收起资源包目录
这可能是史上功能最全的Java权限认证框架! (526个子文件)
mvn clean.bat 1KB
layer.css 14KB
layer.css 14KB
vue.css 12KB
index.css 10KB
index.css 9KB
layer.css 5KB
layer.css 5KB
login.css 2KB
login.css 2KB
login.css 2KB
spring.factories 280B
spring.factories 248B
spring.factories 129B
spring.factories 108B
spring.factories 106B
spring.factories 101B
spring.factories 99B
spring.factories 99B
spring.factories 97B
org.apache.dubbo.rpc.Filter 183B
loading-0.gif 6KB
loading-0.gif 6KB
loading-2.gif 2KB
loading-2.gif 2KB
loading-1.gif 701B
loading-1.gif 701B
.gitignore 129B
.gitignore 129B
.gitignore 129B
.gitignore 129B
.gitignore 114B
.gitignore 96B
.gitignore 96B
.gitignore 96B
.gitignore 96B
.gitignore 96B
.gitignore 91B
.gitignore 91B
.gitignore 91B
.gitignore 91B
.gitignore 91B
.gitignore 91B
.gitignore 91B
.gitignore 91B
.gitignore 91B
.gitignore 91B
.gitignore 91B
.gitignore 91B
.gitignore 91B
.gitignore 91B
.gitignore 91B
.gitignore 91B
.gitignore 91B
.gitignore 91B
.gitignore 91B
.gitignore 91B
.gitignore 91B
.gitignore 91B
.gitignore 91B
.gitignore 91B
.gitignore 91B
.gitignore 91B
.gitignore 91B
.gitignore 91B
index.html 22KB
index.html 10KB
index.html 10KB
confirm.html 3KB
sso-login.html 2KB
index.html 2KB
login.html 2KB
sso-auth.html 1KB
sa-login.html 1KB
sa-login.html 1KB
index.html 1KB
StpLogic.java 53KB
SaOAuth2Template.java 28KB
BCrypt.java 28KB
StpUserUtil.java 25KB
StpUtil.java 24KB
SoMap.java 19KB
SoMap.java 19KB
SaTokenConfig.java 14KB
SaSecureUtil.java 13KB
SaSession.java 12KB
BasicsTest.java 12KB
SaSsoTemplate.java 12KB
SaFoxUtil.java 11KB
SaSsoHandle.java 11KB
TestController.java 10KB
SaOAuth2Handle.java 10KB
TestController.java 10KB
SaRouter.java 9KB
SaClientModel.java 9KB
SaSsoConfig.java 9KB
SaTokenDaoRedisJackson.java 9KB
JwtForMixTest.java 8KB
SaOAuth2Util.java 8KB
SaTokenCacheDao.java 8KB
共 526 条
- 1
- 2
- 3
- 4
- 5
- 6
「已注销」
- 粉丝: 794
- 资源: 3613
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
前往页