Compare commits

..

5 Commits

Author SHA1 Message Date
shengzhang
3bdc65839e v1.15.2 2021-03-26 01:17:15 +08:00
shengzhang
1d4639ec0b SaCheckAspect 标注注册顺序为-1,保证执行在所有自定义切面的前面 2021-03-26 00:12:12 +08:00
shengzhang
64c06a3daf StpUtil.logoutByTokenValue API的文档说明 2021-03-25 22:20:45 +08:00
shengzhang
a6cf265e4d v1.15.0.RELEASE 发布. 2021-03-24 01:58:58 +08:00
shengzhang
921e693e7e v1.15.0.RELEASE 发布 2021-03-24 01:44:19 +08:00
28 changed files with 102 additions and 65 deletions

View File

@@ -1,11 +1,11 @@
<p align="center">
<img alt="logo" src="https://gitee.com/sz6/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.15.0</h1>
<h1 align="center" style="margin: 30px 0 30px; font-weight: bold;">sa-token v1.15.2</h1>
<h4 align="center">这可能是史上功能最全的Java权限认证框架</h4>
<h4 align="center">
<a href="https://gitee.com/sz6/sa-token/stargazers"><img src="https://gitee.com/sz6/sa-token/badge/star.svg"></a>
<a href="https://github.com/click33/sa-token"><img src="https://img.shields.io/badge/sa--token-v1.15.0-2B9939"></a>
<a href="https://github.com/click33/sa-token"><img src="https://img.shields.io/badge/sa--token-v1.15.2-2B9939"></a>
<a href="https://github.com/click33/sa-token/stargazers"><img src="https://img.shields.io/github/stars/click33/sa-token"></a>
<a href="https://github.com/click33/sa-token/watchers"><img src="https://img.shields.io/github/watchers/click33/sa-token"></a>
<a href="https://github.com/click33/sa-token/network/members"><img src="https://img.shields.io/github/forks/click33/sa-token"></a>
@@ -182,11 +182,10 @@ sa-token秉承着开放的思想欢迎大家贡献代码为框架添砖加
## 友情链接
[**[ OkHttps ]** 一个轻量级http通信框架API设计无比优雅支持 WebSocket 以及 Stomp 协议](https://gitee.com/ejlchina-zhxu/okhttps)
[**[ okhttps ]** 一个轻量级http通信框架API设计无比优雅支持 WebSocket 以及 Stomp 协议](https://gitee.com/ejlchina-zhxu/okhttps)
[**[ 小诺快速开发平台 ]** 基于SpringBoot2 + AntDesignVue全新快速开发平台同时拥有三个版本](https://xiaonuo.vip/index#pricing)
## 交流群
QQ交流群[1002350610 点击加入](https://jq.qq.com/?_wv=1027&k=45H977HM)

View File

@@ -8,7 +8,7 @@
<groupId>cn.dev33</groupId>
<artifactId>sa-token-parent</artifactId>
<packaging>pom</packaging>
<version>1.15.0</version>
<version>1.15.2</version>
<!-- 项目介绍 -->
<name>sa-token</name>
@@ -23,7 +23,7 @@
<module>sa-token-dao-redis</module>
<module>sa-token-dao-redis-jackson</module>
<module>sa-token-spring-aop</module>
<module>sa-token-oauth2</module>
<!-- <module>sa-token-oauth2</module> -->
</modules>
<!-- 开源协议 apache 2.0 -->
@@ -38,7 +38,7 @@
<!-- 一些属性 -->
<properties>
<sa-token-version>1.15.0</sa-token-version>
<sa-token-version>1.15.2</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>

View File

@@ -7,7 +7,7 @@
<parent>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-parent</artifactId>
<version>1.15.0</version>
<version>1.15.2</version>
</parent>
<packaging>jar</packaging>

View File

@@ -136,8 +136,10 @@ public class SaTokenManager {
public static SaTokenServlet getSaTokenServlet() {
if (saTokenServlet == null) {
// 如果对象为空,则使用框架默认方式初始化
if (saTokenServlet == null) {
setSaTokenServlet(new SaTokenServletDefaultImpl());
synchronized (SaTokenManager.class) {
if (saTokenServlet == null) {
setSaTokenServlet(new SaTokenServletDefaultImpl());
}
}
}
return saTokenServlet;

View File

@@ -43,7 +43,7 @@ public class SaTokenActionDefaultImpl implements SaTokenAction {
return SaTokenInsideUtil.getRandomString(128);
}
// tik风格 (2_14_16)
if(SaTokenConsts.TOKEN_STYLE_RANDOM_TIK.equals(tokenStyle)) {
if(SaTokenConsts.TOKEN_STYLE_TIK.equals(tokenStyle)) {
return SaTokenInsideUtil.getRandomString(2) + "_" + SaTokenInsideUtil.getRandomString(14) + "_" + SaTokenInsideUtil.getRandomString(16) + "__";
}
// 默认还是uuid

View File

@@ -439,5 +439,4 @@ public class SaSecureUtil {
}
}

View File

@@ -240,13 +240,13 @@ public class SaSession implements Serializable {
// ----------------------- 一些操作
/**
* 将这个Session从持久库更新一下
* 更新Session从持久库更新刷新一下
*/
public void update() {
SaTokenManager.getSaTokenDao().updateSession(this);
}
/** 注销会话 (注销后此session会话将不再存储服务器上) */
/** 注销Session (从持久库删除) */
public void logout() {
SaTokenManager.getSaTokenDao().deleteSession(this.id);
}
@@ -298,28 +298,7 @@ public class SaSession implements Serializable {
// ----------------------- 存取值 (类型转换)
/**
* 写值
* @param key 名称
* @param value 值
*/
public void set(String key, Object value) {
dataMap.put(key, value);
update();
}
/**
* 写值(只有在此key原本无值的时候才会写入)
* @param key 名称
* @param value 值
*/
public void setDefaultValue(String key, Object value) {
if(has(key) == false) {
dataMap.put(key, value);
update();
}
}
// ---- 取值
/**
* 取值
* @param key key
@@ -418,6 +397,33 @@ public class SaSession implements Serializable {
return getValueByClass(value, cs);
}
// ---- 其他
/**
* 写值
* @param key 名称
* @param value 值
* @return 对象自身
*/
public SaSession set(String key, Object value) {
dataMap.put(key, value);
update();
return this;
}
/**
* 写值(只有在此key原本无值的时候才会写入)
* @param key 名称
* @param value 值
* @return 对象自身
*/
public SaSession setDefaultValue(String key, Object value) {
if(has(key) == false) {
dataMap.put(key, value);
update();
}
return this;
}
/**
* 是否含有某个key
* @param key has
@@ -426,6 +432,17 @@ public class SaSession implements Serializable {
public boolean has(String key) {
return !valueIsNull(get(key));
}
/**
* 删值
* @param key 要删除的key
* @return 对象自身
*/
public SaSession delete(String key) {
dataMap.remove(key);
update();
return this;
}
// --------- 工具方法

View File

@@ -13,7 +13,7 @@ public class SaTokenConsts {
/**
* sa-token 版本号
*/
public static final String VERSION_NO = "v1.15.0";
public static final String VERSION_NO = "v1.15.2";
/**
* sa-token 开源地址
@@ -74,7 +74,7 @@ public class SaTokenConsts {
/**
* token风格: tik风格 (2_14_16)
*/
public static final String TOKEN_STYLE_RANDOM_TIK = "tik";
public static final String TOKEN_STYLE_TIK = "tik";
// =================== 其它 ===================

View File

@@ -7,7 +7,7 @@
<parent>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-parent</artifactId>
<version>1.15.0</version>
<version>1.15.2</version>
</parent>
<packaging>jar</packaging>

View File

@@ -7,7 +7,7 @@
<parent>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-parent</artifactId>
<version>1.15.0</version>
<version>1.15.2</version>
</parent>
<packaging>jar</packaging>

View File

@@ -16,7 +16,7 @@
<!-- 定义sa-token版本号 -->
<properties>
<sa-token-version>1.15.0</sa-token-version>
<sa-token-version>1.15.2</sa-token-version>
</properties>
<dependencies>

View File

@@ -17,7 +17,7 @@
<java.version>1.8</java.version>
<maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
<!-- 定义sa-token版本号 -->
<sa-token-version>1.15.0</sa-token-version>
<sa-token-version>1.15.2</sa-token-version>
</properties>
<dependencies>

View File

@@ -17,7 +17,7 @@
<java.version>1.8</java.version>
<maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
<!-- 定义sa-token版本号 -->
<sa-token-version>1.15.0</sa-token-version>
<sa-token-version>1.15.2</sa-token-version>
</properties>
<dependencies>

View File

@@ -16,7 +16,7 @@
<!-- 定义sa-token版本号 -->
<properties>
<sa-token-version>1.15.0</sa-token-version>
<sa-token-version>1.15.2</sa-token-version>
</properties>
<dependencies>

View File

@@ -1,6 +1,5 @@
package com.pj;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@@ -8,10 +7,10 @@ import cn.dev33.satoken.SaTokenManager;
@SpringBootApplication
public class SaTokenDemoApplication {
public static void main(String[] args) {
SpringApplication.run(SaTokenDemoApplication.class, args);
SpringApplication.run(SaTokenDemoApplication.class, args);
System.out.println("\n启动成功sa-token配置如下" + SaTokenManager.getConfig());
}
}

View File

@@ -1,11 +1,11 @@
<p align="center">
<img alt="logo" src="https://gitee.com/sz6/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.15.0</h1>
<h1 align="center" style="margin: 30px 0 30px; font-weight: bold;">sa-token v1.15.2</h1>
<h4 align="center">这可能是史上功能最全的Java权限认证框架</h4>
<h4 align="center">
<a href="https://gitee.com/sz6/sa-token/stargazers"><img src="https://gitee.com/sz6/sa-token/badge/star.svg"></a>
<a href="https://github.com/click33/sa-token"><img src="https://img.shields.io/badge/sa--token-v1.15.0-2B9939"></a>
<a href="https://github.com/click33/sa-token"><img src="https://img.shields.io/badge/sa--token-v1.15.2-2B9939"></a>
<a href="https://github.com/click33/sa-token/stargazers"><img src="https://img.shields.io/github/stars/click33/sa-token"></a>
<a href="https://github.com/click33/sa-token/watchers"><img src="https://img.shields.io/github/watchers/click33/sa-token"></a>
<a href="https://github.com/click33/sa-token/network/members"><img src="https://img.shields.io/github/forks/click33/sa-token"></a>

View File

@@ -44,7 +44,7 @@
</div>
<script>
var name = '<img style="width: 50px; height: 50px; vertical-align: middle;" src="logo.png" alt="logo" /> ';
name += '<b style="font-size: 24px; vertical-align: middle;">sa-token</b> <sub>v1.15.0</sub>'
name += '<b style="font-size: 24px; vertical-align: middle;">sa-token</b> <sub>v1.15.2</sub>'
window.$docsify = {
name: name, // 名字
repo: 'https://github.com/click33/sa-token', // github地址

View File

@@ -9,14 +9,14 @@
<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-spring-boot-starter</artifactId>
<version>1.15.0</version>
<version>1.15.2</version>
</dependency>
```
## Gradle依赖
Gradle用户引入依赖
```
implementation 'cn.dev33:sa-token-spring-boot-starter:1.15.0'
implementation 'cn.dev33:sa-token-spring-boot-starter:1.15.2'
```

View File

@@ -19,7 +19,7 @@
<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-spring-boot-starter</artifactId>
<version>1.15.0</version>
<version>1.15.2</version>
</dependency>
```

View File

@@ -21,7 +21,7 @@ sa-token内置两种模式完成注解鉴权分别是`AOP模式`和`拦截器
<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-spring-aop</artifactId>
<version>1.15.0</version>
<version>1.15.2</version>
</dependency>
```

View File

@@ -14,7 +14,7 @@ Sa-token默认将会话数据保存在内存中此模式读写速度最快
<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-dao-redis</artifactId>
<version>1.15.0</version>
<version>1.15.2</version>
</dependency>
```
优点兼容性好缺点Session序列化后基本不可读对开发者来讲等同于乱码
@@ -26,7 +26,7 @@ Sa-token默认将会话数据保存在内存中此模式读写速度最快
<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-dao-redis-jackson</artifactId>
<version>1.15.0</version>
<version>1.15.2</version>
</dependency>
```
优点Session序列化后可读性强可灵活手动修改缺点兼容性稍差

View File

@@ -16,3 +16,10 @@
StpUtil.logoutByLoginId(10001);
```
#### StpUtil.logoutByTokenValue(String tokenValue);
你还可以让指定token的会话注销登录 (此方法直接删除了`token->uid`的映射关系,对方再次访问时提示:`token无效`,场景值为-2)
``` java
// 使账号id为10001的会话注销登录
StpUtil.logoutByTokenValue("xxxx-xxxx-xxxx-xxxx-xxxx");
```

View File

@@ -41,7 +41,7 @@
<!-- 内容部分 -->
<div class="main-box">
<div class="content-box">
<h1>sa-token<small>v1.15.0</small></h1>
<h1>sa-token<small>v1.15.2</small></h1>
<div class="sub-title">这可能是史上功能最全的java权限认证框架</div>
<!-- <p>0配置开箱即用低学习成本</p> -->
<p>登录验证、权限验证、Session会话、踢人下线、集成Redis、分布式会话、单点登录、前后台分离、记住我模式、模拟他人账号、临时身份切换、多账号体系、注解式鉴权、路由拦截式鉴权、花式token、自动续签、同端互斥登录、会话治理、密码加密、jwt集成、Spring集成...</p>

View File

@@ -7,7 +7,7 @@
<parent>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-parent</artifactId>
<version>1.15.0</version>
<version>1.15.2</version>
</parent>
<packaging>jar</packaging>

View File

@@ -7,7 +7,7 @@
<parent>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-parent</artifactId>
<version>1.15.0</version>
<version>1.15.2</version>
</parent>
<packaging>jar</packaging>

View File

@@ -5,6 +5,7 @@ import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.aspectj.lang.reflect.MethodSignature;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
import cn.dev33.satoken.stp.StpLogic;
@@ -17,8 +18,14 @@ import cn.dev33.satoken.stp.StpUtil;
*/
@Aspect
@Component
@Order(SaCheckAspect.aspectOrder)
public class SaCheckAspect {
/**
* 切面执行顺序
*/
public static final int aspectOrder = -1;
/**
* 构建
*/

View File

@@ -7,7 +7,7 @@
<parent>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-parent</artifactId>
<version>1.15.0</version>
<version>1.15.2</version>
</parent>
<packaging>jar</packaging>

View File

@@ -15,13 +15,19 @@ import cn.dev33.satoken.stp.StpUtil;
public class SaRouteInterceptor implements HandlerInterceptor {
/**
* 自定义模式下的执行函数
* 每次进入拦截器的[执行函数]
*/
public SaRouteFunction function;
/**
* 创建 (默认为自定义认证)
* @param function 自定义模式下的执行函数
* 创建一个路由拦截器
*/
public SaRouteInterceptor() {
}
/**
* 创建, 并指定[执行函数]
* @param function [执行函数]
*/
public SaRouteInterceptor(SaRouteFunction function) {
this.function = function;
@@ -50,6 +56,7 @@ public class SaRouteInterceptor implements HandlerInterceptor {
if(function == null) {
StpUtil.checkLogin();
} else {
// 否则执行函数
function.run(request, response, handler);
}