v1.7.0 版本更新

This commit is contained in:
shengzhang 2020-12-24 22:51:57 +08:00
parent 5c684ac7f1
commit d9836f00ca
18 changed files with 117 additions and 101 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" style="margin-bottom: 10px;">
</p>
<h1 align="center" style="margin: 30px 0 30px; font-weight: bold;">sa-token v1.6.0</h1>
<h1 align="center" style="margin: 30px 0 30px; font-weight: bold;">sa-token v1.7.0</h1>
<h4 align="center">一个JavaWeb轻量级权限认证框架功能全面上手简单</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.6.0-2B9939"></a>
<a href="https://github.com/click33/sa-token"><img src="https://img.shields.io/badge/sa--token-v1.7.0-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

@ -8,7 +8,7 @@
<groupId>cn.dev33</groupId>
<artifactId>sa-token-parent</artifactId>
<packaging>pom</packaging>
<version>1.6.0</version>
<version>1.7.0</version>
<!-- 项目介绍 -->
<name>sa-token</name>

View File

@ -25,25 +25,11 @@
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
<!-- 开发测试 -->
<!-- <dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-dev</artifactId>
<version>1.6.0</version>
</dependency> -->
<!-- sa-token -->
<!-- <dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token</artifactId>
<version>1.4.0</version>
</dependency> -->
<!-- sa-token 权限认证, 在线文档http://sa-token.dev33.cn/ -->
<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-spring-boot-starter</artifactId>
<version>1.6.0</version>
<version>1.7.0</version>
</dependency>
<!-- SpringBoot整合redis -->

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" style="margin-bottom: 10px;">
</p>
<h1 align="center" style="margin: 30px 0 30px; font-weight: bold;">sa-token v1.6.0</h1>
<h1 align="center" style="margin: 30px 0 30px; font-weight: bold;">sa-token v1.7.0</h1>
<h4 align="center">一个JavaWeb轻量级权限认证框架功能全面上手简单</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.6.0-2B9939"></a>
<a href="https://github.com/click33/sa-token"><img src="https://img.shields.io/badge/sa--token-v1.7.0-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

@ -35,7 +35,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.6.0</sub>'
name += '<b style="font-size: 24px; vertical-align: middle;">sa-token</b> <sub>v1.7.0</sub>'
window.$docsify = {
name: name, // 名字
repo: 'https://github.com/click33/sa-token', // github地址

View File

@ -1,6 +1,16 @@
# 更新日志
### 2020-12-24 @v1.7.0
- 优化项目架构改为maven多模块形式方便增加新模块 **[重要]**
- 优化:与`springboot`的集成改为`springboot-starter`模式,无需`@SaTokenSetup`注解即可完成自动装配 **[重要]**
- 新增:新增`activity-timeout`配置可控制token临时过期与续签功能 **[重要]**
- 新增:`timeout`过期时间新增-1值代表永不过期
- 新增:`StpUtil.getTokenInfo()`改为对象形式,新增部分常用字段
- 优化解决在无cookie模式下不集成redis时会话无法主动过期的问题
- 修复:修复文档首页样式问题
### 2020-12-17 @v1.6.0
- 新增花式token生成方案 **[重要]**
- 优化:优化`readme.md`

View File

@ -8,8 +8,8 @@
<!-- sa-token 权限认证, 在线文档http://sa-token.dev33.cn/ -->
<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token</artifactId>
<version>1.6.0</version>
<artifactId>sa-token-spring-boot-starter</artifactId>
<version>1.7.0</version>
</dependency>
```

View File

@ -17,8 +17,8 @@
<!-- sa-token 权限认证, 在线文档http://sa-token.dev33.cn/ -->
<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token</artifactId>
<version>1.6.0</version>
<artifactId>sa-token-spring-boot-starter</artifactId>
<version>1.7.0</version>
</dependency>
```

View File

@ -1,52 +1,12 @@
# 框架配置
- 你可以零配置启动框架
- 你可以**零配置启动框架**
- 但同时你也可以通过配置,定制性使用框架,`sa-token`支持多种方式配置框架信息
---
### 所有可配置项
| 参数名称 | 类型 | 默认值 | 说明 |
| :-------- | :-------- | :-------- | :-------- |
| tokenName | String | satoken | token名称同时也是cookie名称 |
| timeout | long | 2592000 | token有效期单位s 默认30天 |
| isShare | Boolean | true | 在多人登录同一账号时是否共享会话为true时共用一个为false时新登录挤掉旧登录|
| isReadBody | Boolean | true | 是否尝试从请求体里读取token |
| isReadHead | Boolean | true | 是否尝试从header里读取token |
| isReadCookie | Boolean | true | 是否尝试从cookie里读取token |
| tokenStyle | String | uuid | token风格, 参考:[花式token](/use/token-style) |
| isV | Boolean | true | 是否在初始化配置时打印版本字符画 |
### 方式1、通过代码配置
``` java
/**
* sa-token代码方式进行配置
*/
@Configuration
public class MySaTokenConfig {
// 获取配置Bean (以代码的方式配置sa-token)
@Primary
@Bean(name="MySaTokenConfig")
public SaTokenConfig getSaTokenConfig() {
SaTokenConfig config = new SaTokenConfig();
config.setTokenName("satoken"); // token名称 (同时也是cookie名称)
config.setTimeout(30 * 24 * 60 * 60); // token有效期单位s 默认30天
config.setIsShare(true); // 在多人登录同一账号时,是否共享会话 (为true时共用一个为false时新登录挤掉旧登录)
config.setIsReadBody(true); // 是否尝试从请求体里读取token
config.setIsReadHead(true); // 是否尝试从header里读取token
config.setIsReadCookie(true); // 是否尝试从cookie里读取token
config.setTokenStyle("uuid"); // token风格
config.setIsV(true); // 是否在初始化配置时打印版本字符画
return config;
}
}
```
### 方式2、在`application.yml`配置
### 方式1、在`application.yml`配置
``` java
spring:
@ -54,8 +14,10 @@ spring:
sa-token:
# token名称 (同时也是cookie名称)
token-name: satoken
# token有效期单位s 默认30天
# token有效期单位s 默认30天, -1代表永不过期
timeout: 2592000
# token临时有效期, 默认-1 代表不限制
activity-timeout: -1
# 在多人登录同一账号时,是否共享会话 (为true时共用一个为false时新登录挤掉旧登录)
is-share: true
# 是否尝试从请求体里读取token
@ -74,3 +36,45 @@ spring:
- 百度: [springboot properties与yml 配置文件的区别](https://www.baidu.com/s?ie=UTF-8&wd=springboot%20properties%E4%B8%8Eyml%20%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E7%9A%84%E5%8C%BA%E5%88%AB)
### 方式2、通过代码配置
``` java
/**
* sa-token代码方式进行配置
*/
@Configuration
public class MySaTokenConfig {
// 获取配置Bean (以代码的方式配置sa-token)
@Primary
@Bean(name="MySaTokenConfig")
public SaTokenConfig getSaTokenConfig() {
SaTokenConfig config = new SaTokenConfig();
config.setTokenName("satoken"); // token名称 (同时也是cookie名称)
config.setTimeout(30 * 24 * 60 * 60); // token有效期单位s 默认30天, -1代表永不过期
config.setActivityTimeout(-1); // token临时有效期, 默认-1 代表不限制
config.setIsShare(true); // 在多人登录同一账号时,是否共享会话 (为true时共用一个为false时新登录挤掉旧登录)
config.setIsReadBody(true); // 是否尝试从请求体里读取token
config.setIsReadHead(true); // 是否尝试从header里读取token
config.setIsReadCookie(true); // 是否尝试从cookie里读取token
config.setTokenStyle("uuid"); // token风格
config.setIsV(true); // 是否在初始化配置时打印版本字符画
return config;
}
}
```
---
### 所有可配置项
| 参数名称 | 类型 | 默认值 | 说明 |
| :-------- | :-------- | :-------- | :-------- |
| tokenName | String | satoken | token名称同时也是cookie名称 |
| timeout | long | 2592000 | token有效期单位/秒 默认30天-1代表永久有效 |
| activityTimeout | long | -1 | token临时有效期 (指定时间内无操作就视为token过期) 单位: 秒, 默认-1 代表不限制 (例如可以设置为1800代表30分钟内无操作就过期) |
| isShare | Boolean | true | 在多人登录同一账号时是否共享会话为true时共用一个为false时新登录挤掉旧登录 |
| isReadBody | Boolean | true | 是否尝试从请求体里读取token |
| isReadHead | Boolean | true | 是否尝试从header里读取token |
| isReadCookie | Boolean | true | 是否尝试从cookie里读取token |
| tokenStyle | String | uuid | token风格, [参考花式token](/use/token-style) |
| isV | Boolean | true | 是否在初始化配置时打印版本字符画 |

View File

@ -43,7 +43,7 @@
<!-- 内容部分 -->
<div class="main-box">
<div class="content-box">
<h1>sa-token<small>v1.6.0</small></h1>
<h1>sa-token<small>v1.7.0</small></h1>
<div class="sub-title">一个JavaWeb轻量级权限认证框架功能全面上手简单</div>
<!-- <p>0配置开箱即用低学习成本</p> -->
<p>登录验证、权限验证、自定义session会话、踢人下线、持久层扩展、无cookie模式、模拟他人账号、多账号体系、注解式鉴权、花式token、Spring集成...</p>

View File

@ -7,7 +7,7 @@
<parent>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-parent</artifactId>
<version>1.6.0</version>
<version>1.7.0</version>
</parent>
<packaging>jar</packaging>
@ -19,7 +19,7 @@
<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-core</artifactId>
<version>1.6.0</version>
<version>1.7.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>

View File

@ -25,7 +25,7 @@ public class SaTokenSpringAutowired {
/**
* 获取配置Bean
* @return .
* @return 配置对象
*/
@Bean
@ConfigurationProperties(prefix="spring.sa-token")
@ -35,7 +35,7 @@ public class SaTokenSpringAutowired {
/**
* 注入配置Bean
* @param saTokenConfig .
* @param saTokenConfig 配置对象
*/
@Autowired
public void setConfig(SaTokenConfig saTokenConfig){

View File

@ -0,0 +1,4 @@
/**
* sa-token集成SpringBoot的各个组件
*/
package cn.dev33.satoken;

View File

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

View File

@ -35,7 +35,7 @@ public class SaTokenInfo {
/**
* @return tokenName
* @return tokenName token名称
*/
public String getTokenName() {
return tokenName;
@ -43,6 +43,7 @@ public class SaTokenInfo {
/**
* @param tokenName 要设置的 tokenName
* @return 对象自身
*/
public SaTokenInfo setTokenName(String tokenName) {
this.tokenName = tokenName;
@ -58,6 +59,7 @@ public class SaTokenInfo {
/**
* @param tokenValue 要设置的 tokenValue
* @return 对象自身
*/
public SaTokenInfo setTokenValue(String tokenValue) {
this.tokenValue = tokenValue;
@ -73,6 +75,7 @@ public class SaTokenInfo {
/**
* @param isLogin 要设置的 isLogin
* @return 对象自身
*/
public SaTokenInfo setIsLogin(Boolean isLogin) {
this.isLogin = isLogin;
@ -88,6 +91,7 @@ public class SaTokenInfo {
/**
* @param loginId 要设置的 loginId
* @return 对象自身
*/
public SaTokenInfo setLoginId(Object loginId) {
this.loginId = loginId;
@ -103,6 +107,7 @@ public class SaTokenInfo {
/**
* @param loginKey 要设置的 loginKey
* @return 对象自身
*/
public SaTokenInfo setLoginKey(String loginKey) {
this.loginKey = loginKey;
@ -118,6 +123,7 @@ public class SaTokenInfo {
/**
* @param tokenTimeout 要设置的 tokenTimeout
* @return 对象自身
*/
public SaTokenInfo setTokenTimeout(long tokenTimeout) {
this.tokenTimeout = tokenTimeout;
@ -133,6 +139,7 @@ public class SaTokenInfo {
/**
* @param sessionTimeout 要设置的 sessionTimeout
* @return 对象自身
*/
public SaTokenInfo setSessionTimeout(long sessionTimeout) {
this.sessionTimeout = sessionTimeout;
@ -148,6 +155,7 @@ public class SaTokenInfo {
/**
* @param tokenActivityTimeout 要设置的 tokenActivityTimeout
* @return 对象自身
*/
public SaTokenInfo setTokenActivityTimeout(long tokenActivityTimeout) {
this.tokenActivityTimeout = tokenActivityTimeout;

View File

@ -28,7 +28,7 @@ public class StpLogic {
/**
* 初始化StpLogic, 并制定loginKey
* @param loginKey .
* @param loginKey 账号标识
*/
public StpLogic(String loginKey) {
this.loginKey = loginKey;
@ -90,7 +90,7 @@ public class StpLogic {
}
/**
* 获取指定id的tokenValue
* 获取指定loginId的tokenValue
* @param loginId .
* @return .
*/
@ -279,8 +279,9 @@ public class StpLogic {
/**
* 获取当前会话登录id, 如果未登录则返回默认值
* @param defaultValue .
* @return .
* @param <T> 返回类型
* @param defaultValue 默认值
* @return 登录id
*/
@SuppressWarnings("unchecked")
public <T>T getLoginId(T defaultValue) {
@ -327,7 +328,7 @@ public class StpLogic {
/**
* 获取当前会话登录id, 并转换为String
* @return
* @return 登录id
*/
public String getLoginIdAsString() {
return String.valueOf(getLoginId());
@ -335,7 +336,7 @@ public class StpLogic {
/**
* 获取当前会话登录id, 并转换为int
* @return .
* @return 登录id
*/
public int getLoginIdAsInt() {
// Object loginId = getLoginId();
@ -347,7 +348,7 @@ public class StpLogic {
/**
* 获取当前会话登录id, 并转换为long
* @return .
* @return 登录id
*/
public long getLoginIdAsLong() {
// Object loginId = getLoginId();
@ -359,7 +360,8 @@ public class StpLogic {
/**
* 获取指定token对应的登录id如果未登录则返回 null
* @return .
* @param tokenValue token
* @return 登录id
*/
public Object getLoginIdByToken(String tokenValue) {
if(tokenValue != null) {
@ -663,7 +665,7 @@ public class StpLogic {
/**
* 获取key客户端 tokenName
* @return
* @return key
*/
public String getKeyTokenName() {
return SaTokenManager.getConfig().getTokenName();
@ -671,7 +673,7 @@ public class StpLogic {
/**
* 获取key tokenValue 持久化
* @param tokenValue .
* @return
* @return key
*/
public String getKeyTokenValue(String tokenValue) {
return SaTokenManager.getConfig().getTokenName() + ":" + loginKey + ":token:" + tokenValue;
@ -679,7 +681,7 @@ public class StpLogic {
/**
* 获取key id 持久化
* @param loginId .
* @return
* @return key
*/
public String getKeyLoginId(Object loginId) {
return SaTokenManager.getConfig().getTokenName() + ":" + loginKey + ":id:" + loginId;
@ -687,15 +689,15 @@ public class StpLogic {
/**
* 获取key session 持久化
* @param loginId .
* @return .
* @return key
*/
public String getKeySession(Object loginId) {
return SaTokenManager.getConfig().getTokenName() + ":" + loginKey + ":session:" + loginId;
}
/**
* 获取key 指定token的最后操作时间 持久化
* @param loginId .
* @return .
* @param tokenValue token
* @return key
*/
public String getKeyLastActivityTime(String tokenValue) {
return SaTokenManager.getConfig().getTokenName() + ":" + loginKey + ":last-activity:" + tokenValue;

View File

@ -33,9 +33,9 @@ public class StpUtil {
}
/**
* 获取指定id的tokenValue
* 获取指定loginId的tokenValue
* @param loginId .
* @return
* @return .
*/
public static String getTokenValueByLoginId(Object loginId) {
return stpLogic.getTokenValueByLoginId(loginId);
@ -117,8 +117,9 @@ public class StpUtil {
/**
* 获取当前会话登录id, 如果未登录则返回默认值
* @param defaultValue .
* @return .
* @param <T> 返回类型
* @param defaultValue 默认值
* @return 登录id
*/
public static <T> T getLoginId(T defaultValue) {
return stpLogic.getLoginId(defaultValue);
@ -126,7 +127,7 @@ public class StpUtil {
/**
* 获取当前会话登录id, 如果未登录则返回null
* @return
* @return .
*/
public static Object getLoginIdDefaultNull() {
return stpLogic.getLoginIdDefaultNull();
@ -134,7 +135,7 @@ public class StpUtil {
/**
* 获取当前会话登录id, 并转换为String
* @return
* @return 登录id
*/
public static String getLoginIdAsString() {
return stpLogic.getLoginIdAsString();
@ -142,7 +143,7 @@ public class StpUtil {
/**
* 获取当前会话登录id, 并转换为int
* @return
* @return 登录id
*/
public static int getLoginIdAsInt() {
return stpLogic.getLoginIdAsInt();
@ -150,15 +151,16 @@ public class StpUtil {
/**
* 获取当前会话登录id, 并转换为long
* @return
* @return 登录id
*/
public static long getLoginIdAsLong() {
return stpLogic.getLoginIdAsLong();
}
/**
/**
* 获取指定token对应的登录id如果未登录则返回 null
* @return .
* @param tokenValue token
* @return 登录id
*/
public static Object getLoginIdByToken(String tokenValue) {
return stpLogic.getLoginIdByToken(tokenValue);
@ -197,7 +199,7 @@ public class StpUtil {
/**
* 获取当前会话的session
* @return
* @return .
*/
public static SaSession getSession() {
return stpLogic.getSession();

View File

@ -13,7 +13,7 @@ public class SaTokenInsideUtil {
/**
* sa-token 版本号
*/
public static final String VERSION_NO = "v1.6.0";
public static final String VERSION_NO = "v1.7.0";
/**
* sa-token 开源地址