提交 f1104b6a 编写于 作者: shengzhang_'s avatar shengzhang_

v1.17.0 更新

上级 87b52420
<p align="center">
<img alt="logo" src="https://gitee.com/dromara/sa-token/raw/master/sa-token-doc/doc/logo.png" width="150" height="150">
</p>
<h1 align="center" style="margin: 30px 0 30px; font-weight: bold;">sa-token v1.16.0</h1>
<h1 align="center" style="margin: 30px 0 30px; font-weight: bold;">sa-token v1.17.0</h1>
<h4 align="center">这可能是史上功能最全的 Java 权限认证框架!</h4>
<h4 align="center">
<a href="https://gitee.com/dromara/sa-token/stargazers"><img src="https://gitee.com/dromara/sa-token/badge/star.svg"></a>
......@@ -28,7 +28,7 @@
## Sa-Token是什么?
sa-token是一个轻量级Java权限认证框架,主要解决:登录认证、权限认证、Session会话、单点登录、OAuth2.0 等一系列权限相关问题
Sa-Token是一个轻量级Java权限认证框架,主要解决:登录认证、权限认证、Session会话、单点登录、OAuth2.0 等一系列权限相关问题
框架针对踢人下线、自动续签、前后台分离、分布式会话……等常见业务进行N多适配,通过sa-token,你可以以一种极简的方式实现系统的权限认证部分
......@@ -42,7 +42,7 @@ sa-token是一个轻量级Java权限认证框架,主要解决:登录认证
## Sa-Token 能做什么?
![sa-token-js](https://oss.dev33.cn/sa-token/doc/sa-token-js.png)
![sa-token-js](https://oss.dev33.cn/sa-token/doc/sa-token-js.png 's-w')
- **登录验证** —— 轻松登录鉴权,并提供五种细分场景值
- **权限验证** —— 适配RBAC权限模型,不同角色不同授权
......@@ -65,6 +65,7 @@ sa-token是一个轻量级Java权限认证框架,主要解决:登录认证
- **会话治理** —— 提供方便灵活的会话查询接口
- **记住我模式** —— 适配[记住我]模式,重启浏览器免验证
- **密码加密** —— 提供密码加密模块,可快速MD5、SHA1、SHA256、AES、RSA加密
- **全局侦听器** —— 在用户登陆、注销、被踢下线等关键性操作时进行一些AOP操作
- **开箱即用** —— 提供SpringMVC、WebFlux等常见web框架starter集成包,真正的开箱即用
- **更多功能正在集成中...** —— 如有您有好想法或者建议,欢迎加群交流
......
call mvn clean
cd sa-token-demo-jwt
call mvn clean
cd ..
cd sa-token-demo-springboot
call mvn clean
cd ..
cd sa-token-demo-webflux
call mvn clean
cd ..
cd sa-token-demo-oauth2\sa-token-demo-oauth2-client
call mvn clean
cd ../..
cd sa-token-demo-oauth2\sa-token-demo-oauth2-server
call mvn clean
cd ../..
echo;
echo;
echo ----------- clean end -----------
echo;
pause
\ No newline at end of file
......@@ -8,7 +8,7 @@
<groupId>cn.dev33</groupId>
<artifactId>sa-token-parent</artifactId>
<packaging>pom</packaging>
<version>1.16.0.RELEASE</version>
<version>1.17.0</version>
<!-- 项目介绍 -->
<name>sa-token</name>
......@@ -40,7 +40,7 @@
<!-- 一些属性 -->
<properties>
<sa-token-version>1.16.0.RELEASE</sa-token-version>
<sa-token-version>1.17.0</sa-token-version>
<jdk.version>1.8</jdk.version>
<project.build.sourceEncoding>utf-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>utf-8</project.reporting.outputEncoding>
......
......@@ -7,7 +7,7 @@
<parent>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-parent</artifactId>
<version>1.16.0.RELEASE</version>
<version>1.17.0</version>
</parent>
<packaging>jar</packaging>
......
......@@ -37,7 +37,6 @@ public class SaTokenManager {
}
public static SaTokenConfig getConfig() {
if (config == null) {
// 如果对象为空,则使用框架默认方式初始化
synchronized (SaTokenManager.class) {
if (config == null) {
setConfig(SaTokenConfigFactory.createConfig());
......@@ -59,7 +58,6 @@ public class SaTokenManager {
}
public static SaTokenDao getSaTokenDao() {
if (saTokenDao == null) {
// 如果对象为空,则使用框架默认方式初始化
synchronized (SaTokenManager.class) {
if (saTokenDao == null) {
setSaTokenDao(new SaTokenDaoDefaultImpl());
......@@ -78,7 +76,6 @@ public class SaTokenManager {
}
public static StpInterface getStpInterface() {
if (stpInterface == null) {
// 如果对象为空,则使用框架默认方式初始化
synchronized (SaTokenManager.class) {
if (stpInterface == null) {
setStpInterface(new StpInterfaceDefaultImpl());
......@@ -97,7 +94,6 @@ public class SaTokenManager {
}
public static SaTokenAction getSaTokenAction() {
if (saTokenAction == null) {
// 如果对象为空,则使用框架默认方式初始化
synchronized (SaTokenManager.class) {
if (saTokenAction == null) {
setSaTokenAction(new SaTokenActionDefaultImpl());
......@@ -116,7 +112,6 @@ public class SaTokenManager {
}
public static SaTokenContext getSaTokenContext() {
if (saTokenContext == null) {
// 如果对象为空,则使用框架默认方式初始化
synchronized (SaTokenManager.class) {
if (saTokenContext == null) {
setSaTokenContext(new SaTokenContextDefaultImpl());
......@@ -127,7 +122,7 @@ public class SaTokenManager {
}
/**
* 听器 Bean
* 听器 Bean
*/
private static SaTokenListener saTokenListener;
public static void setSaTokenListener(SaTokenListener saTokenListener) {
......
......@@ -11,10 +11,10 @@ import cn.dev33.satoken.session.SaSession;
public interface SaTokenDao {
/** 常量,表示一个key永不过期 (在一个key被标注为永远不过期时返回此值) */
public static final Long NEVER_EXPIRE = -1L;
public static final long NEVER_EXPIRE = -1;
/** 常量,表示系统中不存在这个缓存 (在对不存在的key获取剩余存活时间时返回此值) */
public static final Long NOT_VALUE_EXPIRE = -2L;
public static final long NOT_VALUE_EXPIRE = -2;
// --------------------- token相关 ---------------------
......
......@@ -3,7 +3,7 @@ package cn.dev33.satoken.listener;
import cn.dev33.satoken.stp.SaLoginModel;
/**
* Sa-Token的听器
* Sa-Token的听器
* <p> 你可以通过实现此接口在用户登陆、退出等关键性操作时进行一些AOP操作
* @author kong
*
......
......@@ -7,7 +7,7 @@ import cn.dev33.satoken.stp.SaLoginModel;
import cn.dev33.satoken.util.SaTokenInsideUtil;
/**
* Sa-Token 听器的默认实现:log打印
* Sa-Token 听器的默认实现:log打印
* @author kong
*
*/
......
......@@ -13,7 +13,7 @@ public class SaTokenConsts {
/**
* sa-token 当前版本号
*/
public static final String VERSION_NO = "v1.16.0.RELEASE";
public static final String VERSION_NO = "v1.17.0";
/**
* sa-token 开源地址
......
......@@ -7,7 +7,7 @@
<parent>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-parent</artifactId>
<version>1.16.0.RELEASE</version>
<version>1.17.0</version>
</parent>
<packaging>jar</packaging>
......
......@@ -7,7 +7,7 @@
<parent>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-parent</artifactId>
<version>1.16.0.RELEASE</version>
<version>1.17.0</version>
</parent>
<packaging>jar</packaging>
......
......@@ -16,7 +16,7 @@
<!-- 定义sa-token版本号 -->
<properties>
<sa-token-version>1.16.0.RELEASE</sa-token-version>
<sa-token-version>1.17.0</sa-token-version>
</properties>
<dependencies>
......
......@@ -16,7 +16,7 @@
<!-- 定义sa-token版本号 -->
<properties>
<sa-token-version>1.16.0.RELEASE</sa-token-version>
<sa-token-version>1.17.0</sa-token-version>
</properties>
<dependencies>
......
......@@ -16,7 +16,7 @@
<!-- 定义sa-token版本号 -->
<properties>
<sa-token-version>1.16.0.RELEASE</sa-token-version>
<sa-token-version>1.17.0</sa-token-version>
</properties>
<dependencies>
......
<p align="center">
<img alt="logo" src="https://gitee.com/dromara/sa-token/raw/master/sa-token-doc/doc/logo.png" width="150" height="150">
</p>
<h1 align="center" style="margin: 30px 0 30px; font-weight: bold;">sa-token v1.16.0</h1>
<h1 align="center" style="margin: 30px 0 30px; font-weight: bold;">sa-token v1.17.0</h1>
<h4 align="center">这可能是史上功能最全的 Java 权限认证框架!</h4>
<h4 align="center">
<a href="https://gitee.com/dromara/sa-token/stargazers"><img src="https://gitee.com/dromara/sa-token/badge/star.svg"></a>
......@@ -28,7 +28,7 @@
## Sa-Token是什么?
sa-token是一个轻量级Java权限认证框架,主要解决:登录认证、权限认证、Session会话、单点登录、OAuth2.0 等一系列权限相关问题
Sa-Token是一个轻量级Java权限认证框架,主要解决:登录认证、权限认证、Session会话、单点登录、OAuth2.0 等一系列权限相关问题
框架针对踢人下线、自动续签、前后台分离、分布式会话……等常见业务进行N多适配,通过sa-token,你可以以一种极简的方式实现系统的权限认证部分
......@@ -42,7 +42,7 @@ sa-token是一个轻量级Java权限认证框架,主要解决:登录认证
## Sa-Token 能做什么?
![sa-token-js](https://oss.dev33.cn/sa-token/doc/sa-token-js.png)
![sa-token-js](https://oss.dev33.cn/sa-token/doc/sa-token-js.png 's-w')
- **登录验证** —— 轻松登录鉴权,并提供五种细分场景值
- **权限验证** —— 适配RBAC权限模型,不同角色不同授权
......@@ -65,6 +65,7 @@ sa-token是一个轻量级Java权限认证框架,主要解决:登录认证
- **会话治理** —— 提供方便灵活的会话查询接口
- **记住我模式** —— 适配[记住我]模式,重启浏览器免验证
- **密码加密** —— 提供密码加密模块,可快速MD5、SHA1、SHA256、AES、RSA加密
- **全局侦听器** —— 在用户登陆、注销、被踢下线等关键性操作时进行一些AOP操作
- **开箱即用** —— 提供SpringMVC、WebFlux等常见web框架starter集成包,真正的开箱即用
- **更多功能正在集成中...** —— 如有您有好想法或者建议,欢迎加群交流
......
......@@ -25,6 +25,7 @@
- [同端互斥登录](/use/mutex-login)
- [密码加密](/use/password-secure)
- [会话治理](/use/search-session)
- [全局侦听器](/use/global-listener)
- **进阶**
- [全局过滤器](/use/global-filter)
......
......@@ -21,6 +21,7 @@
<nav>
<select onchange="location.href=this.value">
<option value="http://sa-token.dev33.cn/doc/index.html">最新版</option>
<option value="http://sa-token.dev33.cn/v/v1.16.0/doc/index.html">v1.16.0</option>
<option value="http://sa-token.dev33.cn/v/v1.15.0/doc/index.html">v1.15.0</option>
<option value="http://sa-token.dev33.cn/v/v1.14.0/doc/index.html">v1.14.0</option>
<option value="http://sa-token.dev33.cn/v/v1.13.0/doc/index.html">v1.13.0</option>
......@@ -46,7 +47,7 @@
</div>
<script>
var name = '<img style="width: 60px; height: 60px; vertical-align: middle;" src="logo.png" alt="logo" /> ';
name += '<b style="font-size: 28px; vertical-align: middle;">sa-token</b> <sub>v1.16.0</sub>'
name += '<b style="font-size: 28px; vertical-align: middle;">sa-token</b> <sub>v1.17.0</sub>'
window.$docsify = {
name: name, // 名字
repo: 'https://github.com/dromara/sa-token', // github地址
......
# 更新日志
### 2021-4-17 @v1.17.0
- 修复:在WebFlux环境中引入Redis集成包无法启动的问题
- 修复:修复JWT集成示例中版本升级API的变更
- 优化:优化启动时字符画打印
- 文档:新增集成环境说明
- 文档:新增功能介绍图
- 新增:全局过滤器增加限定[拦截路径]与[排除路径]功能
- 重构:全局过滤器执行函数放到成员变量里,连缀风格配置
- 新增:新增全局侦听器,可在用户登陆、注销、被踢下线等关键性操作时进行一些AOP操作 **[重要]**
### 2021-4-12 @v1.16.0
- 新增:新增账号封禁功能,指定时间内账号无法登陆 **[重要]**
- 新增:核心包脱离`ServletAPI`,彻底零依赖! **[重要]**
......@@ -12,7 +23,6 @@
- 文档:新增推荐公众号列表
### 2021-3-23 @v1.15.0
- 新增:文档添加源码涉及技术栈说明
- 优化:优化路由拦截器模块文档,更简洁的示例
......
......@@ -12,7 +12,7 @@
<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-spring-boot-starter</artifactId>
<version>1.16.0.RELEASE</version>
<version>1.17.0</version>
</dependency>
```
......@@ -23,7 +23,7 @@
<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-reactor-spring-boot-starter</artifactId>
<version>1.16.0.RELEASE</version>
<version>1.17.0</version>
</dependency>
```
......@@ -34,7 +34,7 @@
<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-servlet</artifactId>
<version>1.16.0.RELEASE</version>
<version>1.17.0</version>
</dependency>
```
......@@ -45,7 +45,7 @@
<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-core</artifactId>
<version>1.16.0.RELEASE</version>
<version>1.17.0</version>
</dependency>
```
<!---------------------------- tabs:end ------------------------------>
......@@ -56,19 +56,19 @@
<!-- tabs:start -->
<!-- tab:SpringMVC环境 (ServletAPI) -->
``` xml
implementation 'cn.dev33:sa-token-spring-boot-starter:1.16.0.RELEASE'
implementation 'cn.dev33:sa-token-spring-boot-starter:1.17.0'
```
<!-- tab:WebFlux环境 (Reactor) -->
``` xml
implementation 'cn.dev33:sa-token-reactor-spring-boot-starter:1.16.0.RELEASE'
implementation 'cn.dev33:sa-token-reactor-spring-boot-starter:1.17.0'
```
<!-- tab:Servlet容器环境 -->
``` xml
implementation 'cn.dev33:sa-token-servlet:1.16.0.RELEASE'
implementation 'cn.dev33:sa-token-servlet:1.17.0'
```
<!-- tab:其它 -->
``` xml
implementation 'cn.dev33:sa-token-core:1.16.0.RELEASE'
implementation 'cn.dev33:sa-token-core:1.17.0'
```
<!-- tabs:end -->
......
......@@ -17,7 +17,7 @@
<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-spring-boot-starter</artifactId>
<version>1.16.0.RELEASE</version>
<version>1.17.0</version>
</dependency>
```
......
......@@ -19,7 +19,7 @@ WebFlux基于Reactor响应式模型开发,有着与标准ServletAPI完全不
<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-reactor-spring-boot-starter</artifactId>
<version>1.16.0.RELEASE</version>
<version>1.17.0</version>
</dependency>
```
......
......@@ -21,7 +21,7 @@ sa-token内置两种模式完成注解鉴权,分别是`AOP模式`和`拦截器
<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-spring-aop</artifactId>
<version>1.16.0.RELEASE</version>
<version>1.17.0</version>
</dependency>
```
......
......@@ -14,7 +14,7 @@ Sa-token默认将会话数据保存在内存中,此模式读写速度最快,
<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-dao-redis</artifactId>
<version>1.16.0.RELEASE</version>
<version>1.17.0</version>
</dependency>
```
优点:兼容性好,缺点:Session序列化后基本不可读,对开发者来讲等同于乱码
......@@ -26,7 +26,7 @@ Sa-token默认将会话数据保存在内存中,此模式读写速度最快,
<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-dao-redis-jackson</artifactId>
<version>1.16.0.RELEASE</version>
<version>1.17.0</version>
</dependency>
```
优点:Session序列化后可读性强,可灵活手动修改,缺点:兼容性稍差
......
# 全局侦听器
接口`SaTokenListener`是Sa-Token的全局侦听器,通过实现此接口,你可以在用户登陆、退出、被踢下线等关键性操作时进行一些AOP操作
框架对此侦听器的默认实现是log日志输出,你可以通过配置`spring.sa-token.is-log=true`开启
下面我们演示一下如何自定义侦听器的实现:
---
### 自定义侦听器实现
新建`MySaTokenListener.java`,继承`SaTokenListener`接口, 并添加上注解`@Component`,保证此类被`SpringBoot`扫描到
``` java
/**
* 自定义侦听器的实现
*/
@Component
public class MySaTokenListener implements SaTokenListener {
/** 每次登录时触发 */
@Override
public void doLogin(String loginKey, Object loginId, SaLoginModel loginModel) {
// ...
}
/** 每次注销时触发 */
@Override
public void doLogout(String loginKey, Object loginId, String tokenValue) {
// ...
}
/** 每次被踢下线时触发 */
@Override
public void doLogoutByLoginId(String loginKey, Object loginId, String tokenValue, String device) {
// ...
}
/** 每次被顶下线时触发 */
@Override
public void doReplaced(String loginKey, Object loginId, String tokenValue, String device) {
// ...
}
/** 每次被封禁时触发 */
@Override
public void doDisable(String loginKey, Object loginId, long disableTime) {
// ...
}
/** 每次被解封时触发 */
@Override
public void doUntieDisable(String loginKey, Object loginId) {
// ...
}
/** 每次创建Session时触发 */
@Override
public void doCreateSession(String id) {
// ...
}
/** 每次注销Session时触发 */
@Override
public void doLogoutSession(String id) {
// ...
}
}
```
......@@ -46,7 +46,7 @@
<div class="content-box">
<div class="fenge"></div>
<!-- <img class="title-logo" src="./doc/logo.png" onclick="alert('别点我, 快去点star!')"> -->
<h1>Sa-Token<small>v1.16.0</small></h1>
<h1>Sa-Token<small>v1.17.0</small></h1>
<div class="sub-title"> 这可能是史上功能最全的java权限认证框架!</div>
<div class="btn-box">
<a href="https://github.com/dromara/sa-token" target="_blank">GitHub</a>
......@@ -163,6 +163,10 @@
<h2>密码加密</h2>
<p>提供密码加密模块,可快速MD5、SHA1、SHA256、AES、RSA加密</p>
</div>
<div class="feature">
<h2>全局侦听器</h2>
<p>可在用户登陆、注销、被踢下线等关键性操作时进行一些AOP操作</p>
</div>
<div class="feature">
<h2>开箱即用</h2>
<p>提供SpringMVC、WebFlux等常见web框架的starter集成包,真正的开箱即用</p>
......
......@@ -7,7 +7,7 @@
<parent>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-parent</artifactId>
<version>1.16.0.RELEASE</version>
<version>1.17.0</version>
</parent>
<packaging>jar</packaging>
......
......@@ -7,7 +7,7 @@
<parent>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-parent</artifactId>
<version>1.16.0.RELEASE</version>
<version>1.17.0</version>
</parent>
<packaging>jar</packaging>
......
......@@ -104,7 +104,7 @@ public class SaTokenSpringAutowired {
}
/**
* 注入听器Bean
* 注入听器Bean
*
* @param saTokenListener saTokenListener对象
*/
......@@ -112,6 +112,7 @@ public class SaTokenSpringAutowired {
public void setSaTokenListener(SaTokenListener saTokenListener) {
SaTokenManager.setSaTokenListener(saTokenListener);
}
/**
* 利用自动匹配特性,获取SpringMVC框架内部使用的路由匹配器
*
......
......@@ -7,7 +7,7 @@
<parent>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-parent</artifactId>
<version>1.16.0.RELEASE</version>
<version>1.17.0</version>
</parent>
<packaging>jar</packaging>
......
......@@ -7,7 +7,7 @@
<parent>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-parent</artifactId>
<version>1.16.0.RELEASE</version>
<version>1.17.0</version>
</parent>
<packaging>jar</packaging>
......
......@@ -7,7 +7,7 @@
<parent>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-parent</artifactId>
<version>1.16.0.RELEASE</version>
<version>1.17.0</version>
</parent>
<packaging>jar</packaging>
......
......@@ -95,7 +95,7 @@ public class SaTokenSpringAutowired {
}
/**
* 注入听器Bean
* 注入听器Bean
*
* @param saTokenListener saTokenListener对象
*/
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册