Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
shengzhang_
sa-token
提交
f2642453
sa-token
项目概览
shengzhang_
/
sa-token
通知
68
Star
16
Fork
4
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
sa-token
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
f2642453
编写于
1月 09, 2021
作者:
shengzhang_
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
v1.10.0 版本更新, 提供会话治理接口
上级
2328f9d6
变更
21
隐藏空白更改
内联
并排
Showing
21 changed file
with
89 addition
and
36 deletion
+89
-36
README.md
README.md
+2
-2
pom.xml
pom.xml
+1
-1
sa-token-core/pom.xml
sa-token-core/pom.xml
+1
-1
sa-token-core/src/main/java/cn/dev33/satoken/util/SaTokenConsts.java
...re/src/main/java/cn/dev33/satoken/util/SaTokenConsts.java
+1
-1
sa-token-dao-redis-jackson/pom.xml
sa-token-dao-redis-jackson/pom.xml
+2
-2
sa-token-dao-redis-jackson/src/main/java/cn/dev33/satoken/dao/SaTokenDaoRedisJackson.java
...ain/java/cn/dev33/satoken/dao/SaTokenDaoRedisJackson.java
+22
-0
sa-token-dao-redis/pom.xml
sa-token-dao-redis/pom.xml
+2
-2
sa-token-dao-redis/src/main/java/cn/dev33/satoken/dao/SaTokenDaoRedis.java
...s/src/main/java/cn/dev33/satoken/dao/SaTokenDaoRedis.java
+22
-0
sa-token-demo-springboot/pom.xml
sa-token-demo-springboot/pom.xml
+3
-3
sa-token-demo-springboot/src/main/java/com/pj/test/StressTestController.java
...gboot/src/main/java/com/pj/test/StressTestController.java
+6
-2
sa-token-demo-springboot/src/main/java/com/pj/test/TestController.java
...-springboot/src/main/java/com/pj/test/TestController.java
+4
-5
sa-token-demo-springboot/src/main/resources/application.yml
sa-token-demo-springboot/src/main/resources/application.yml
+1
-3
sa-token-doc/doc/README.md
sa-token-doc/doc/README.md
+4
-3
sa-token-doc/doc/index.html
sa-token-doc/doc/index.html
+2
-2
sa-token-doc/doc/more/update-log.md
sa-token-doc/doc/more/update-log.md
+6
-0
sa-token-doc/doc/start/download.md
sa-token-doc/doc/start/download.md
+1
-1
sa-token-doc/doc/start/example.md
sa-token-doc/doc/start/example.md
+1
-1
sa-token-doc/doc/use/dao-extend.md
sa-token-doc/doc/use/dao-extend.md
+2
-2
sa-token-doc/doc/use/session.md
sa-token-doc/doc/use/session.md
+1
-0
sa-token-doc/index.html
sa-token-doc/index.html
+3
-3
sa-token-spring-boot-starter/pom.xml
sa-token-spring-boot-starter/pom.xml
+2
-2
未找到文件。
README.md
浏览文件 @
f2642453
<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.
9
.0
</h1>
<h1
align=
"center"
style=
"margin: 30px 0 30px; font-weight: bold;"
>
sa-token v1.
10
.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.
9
.0-2B9939"
></a>
<a
href=
"https://github.com/click33/sa-token"
><img
src=
"https://img.shields.io/badge/sa--token-v1.
10
.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>
...
...
pom.xml
浏览文件 @
f2642453
...
...
@@ -8,7 +8,7 @@
<groupId>
cn.dev33
</groupId>
<artifactId>
sa-token-parent
</artifactId>
<packaging>
pom
</packaging>
<version>
1.
9
.0
</version>
<version>
1.
10
.0
</version>
<!-- 项目介绍 -->
<name>
sa-token
</name>
...
...
sa-token-core/pom.xml
浏览文件 @
f2642453
...
...
@@ -7,7 +7,7 @@
<parent>
<groupId>
cn.dev33
</groupId>
<artifactId>
sa-token-parent
</artifactId>
<version>
1.
9
.0
</version>
<version>
1.
10
.0
</version>
</parent>
<packaging>
jar
</packaging>
...
...
sa-token-core/src/main/java/cn/dev33/satoken/util/SaTokenConsts.java
浏览文件 @
f2642453
...
...
@@ -10,7 +10,7 @@ public class SaTokenConsts {
/**
* sa-token 版本号
*/
public
static
final
String
VERSION_NO
=
"v1.
9
.0"
;
public
static
final
String
VERSION_NO
=
"v1.
10
.0"
;
/**
* sa-token 开源地址
...
...
sa-token-dao-redis-jackson/pom.xml
浏览文件 @
f2642453
...
...
@@ -7,7 +7,7 @@
<parent>
<groupId>
cn.dev33
</groupId>
<artifactId>
sa-token-parent
</artifactId>
<version>
1.
9
.0
</version>
<version>
1.
10
.0
</version>
</parent>
<packaging>
jar
</packaging>
...
...
@@ -20,7 +20,7 @@
<dependency>
<groupId>
cn.dev33
</groupId>
<artifactId>
sa-token-spring-boot-starter
</artifactId>
<version>
1.
9
.0
</version>
<version>
1.
10
.0
</version>
</dependency>
<!-- RedisTemplate 相关操作API -->
<dependency>
...
...
sa-token-dao-redis-jackson/src/main/java/cn/dev33/satoken/dao/SaTokenDaoRedisJackson.java
浏览文件 @
f2642453
...
...
@@ -124,6 +124,17 @@ public class SaTokenDaoRedisJackson implements SaTokenDao {
*/
@Override
public
void
updateTimeout
(
String
key
,
long
timeout
)
{
// 判断是否想要设置为永久
if
(
timeout
==
SaTokenDao
.
NEVER_EXPIRE
)
{
long
expire
=
getTimeout
(
key
);
if
(
expire
==
SaTokenDao
.
NEVER_EXPIRE
)
{
// 如果其已经被设置为永久,则不作任何处理
}
else
{
// 如果尚未被设置为永久,那么再次set一次
this
.
setValue
(
key
,
this
.
getValue
(
key
),
timeout
);
}
return
;
}
stringRedisTemplate
.
expire
(
key
,
timeout
,
TimeUnit
.
SECONDS
);
}
...
...
@@ -183,6 +194,17 @@ public class SaTokenDaoRedisJackson implements SaTokenDao {
*/
@Override
public
void
updateSessionTimeout
(
String
sessionId
,
long
timeout
)
{
// 判断是否想要设置为永久
if
(
timeout
==
SaTokenDao
.
NEVER_EXPIRE
)
{
long
expire
=
getSessionTimeout
(
sessionId
);
if
(
expire
==
SaTokenDao
.
NEVER_EXPIRE
)
{
// 如果其已经被设置为永久,则不作任何处理
}
else
{
// 如果尚未被设置为永久,那么再次set一次
this
.
saveSession
(
this
.
getSession
(
sessionId
),
timeout
);
}
return
;
}
sessionRedisTemplate
.
expire
(
sessionId
,
timeout
,
TimeUnit
.
SECONDS
);
}
...
...
sa-token-dao-redis/pom.xml
浏览文件 @
f2642453
...
...
@@ -7,7 +7,7 @@
<parent>
<groupId>
cn.dev33
</groupId>
<artifactId>
sa-token-parent
</artifactId>
<version>
1.
9
.0
</version>
<version>
1.
10
.0
</version>
</parent>
<packaging>
jar
</packaging>
...
...
@@ -20,7 +20,7 @@
<dependency>
<groupId>
cn.dev33
</groupId>
<artifactId>
sa-token-spring-boot-starter
</artifactId>
<version>
1.
9
.0
</version>
<version>
1.
10
.0
</version>
</dependency>
<!-- RedisTemplate 相关操作API -->
<dependency>
...
...
sa-token-dao-redis/src/main/java/cn/dev33/satoken/dao/SaTokenDaoRedis.java
浏览文件 @
f2642453
...
...
@@ -105,6 +105,17 @@ public class SaTokenDaoRedis implements SaTokenDao {
*/
@Override
public
void
updateTimeout
(
String
key
,
long
timeout
)
{
// 判断是否想要设置为永久
if
(
timeout
==
SaTokenDao
.
NEVER_EXPIRE
)
{
long
expire
=
getTimeout
(
key
);
if
(
expire
==
SaTokenDao
.
NEVER_EXPIRE
)
{
// 如果其已经被设置为永久,则不作任何处理
}
else
{
// 如果尚未被设置为永久,那么再次set一次
this
.
setValue
(
key
,
this
.
getValue
(
key
),
timeout
);
}
return
;
}
stringRedisTemplate
.
expire
(
key
,
timeout
,
TimeUnit
.
SECONDS
);
}
...
...
@@ -164,6 +175,17 @@ public class SaTokenDaoRedis implements SaTokenDao {
*/
@Override
public
void
updateSessionTimeout
(
String
sessionId
,
long
timeout
)
{
// 判断是否想要设置为永久
if
(
timeout
==
SaTokenDao
.
NEVER_EXPIRE
)
{
long
expire
=
getSessionTimeout
(
sessionId
);
if
(
expire
==
SaTokenDao
.
NEVER_EXPIRE
)
{
// 如果其已经被设置为永久,则不作任何处理
}
else
{
// 如果尚未被设置为永久,那么再次set一次
this
.
saveSession
(
this
.
getSession
(
sessionId
),
timeout
);
}
return
;
}
sessionRedisTemplate
.
expire
(
sessionId
,
timeout
,
TimeUnit
.
SECONDS
);
}
...
...
sa-token-demo-springboot/pom.xml
浏览文件 @
f2642453
...
...
@@ -29,21 +29,21 @@
<dependency>
<groupId>
cn.dev33
</groupId>
<artifactId>
sa-token-spring-boot-starter
</artifactId>
<version>
1.
9
.0
</version>
<version>
1.
10
.0
</version>
</dependency>
<!-- sa-token整合redis (使用jdk默认序列化方式) -->
<!-- <dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-dao-redis</artifactId>
<version>1.
9
.0</version>
<version>1.
10
.0</version>
</dependency> -->
<!-- sa-token整合redis (使用jackson序列化方式) -->
<!-- <dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-dao-redis-jackson</artifactId>
<version>1.
9
.0</version>
<version>1.
10
.0</version>
</dependency> -->
<!-- 提供redis连接池 -->
...
...
sa-token-demo-springboot/src/main/java/com/pj/test/StressTestController.java
浏览文件 @
f2642453
...
...
@@ -27,13 +27,17 @@ public class StressTestController {
public
AjaxJson
login
()
{
// StpUtil.getTokenSession().logout();
// StpUtil.logoutByLoginId(10001);
int
count
=
10
;
// 循环多少轮
int
loginCount
=
10000
;
// 每轮循环多少次
// 循环10次 取平均时间
List
<
Double
>
list
=
new
ArrayList
<>();
for
(
int
i
=
1
0
;
i
<=
1
;
i
++)
{
for
(
int
i
=
1
;
i
<=
count
;
i
++)
{
System
.
out
.
println
(
"\n---------------------第"
+
i
+
"轮---------------------"
);
Ttime
t
=
new
Ttime
().
start
();
// 每次登录的次数
for
(
int
j
=
1
;
j
<=
10000
;
j
++)
{
for
(
int
j
=
1
;
j
<=
loginCount
;
j
++)
{
StpUtil
.
setLoginId
(
"1000"
+
j
,
"PC-"
+
j
);
if
(
j
%
1000
==
0
)
{
System
.
out
.
println
(
"已登录:"
+
j
);
...
...
sa-token-demo-springboot/src/main/java/com/pj/test/TestController.java
浏览文件 @
f2642453
...
...
@@ -203,13 +203,12 @@ public class TestController {
}
// 测试 浏览器访问: http://localhost:8081/test/searchSession
// 测试前,请先将 is-read-cookie 配置为 false
@RequestMapping
(
"searchSession"
)
public
AjaxJson
searchSession
()
{
// 测试会话治理 浏览器访问: http://localhost:8081/test/search
@RequestMapping
(
"search"
)
public
AjaxJson
search
()
{
System
.
out
.
println
(
"--------------"
);
Ttime
t
=
new
Ttime
().
start
();
List
<
String
>
tokenValue
=
StpUtil
.
searchTokenValue
(
""
,
0
,
10
);
List
<
String
>
tokenValue
=
StpUtil
.
searchTokenValue
(
"
8feb8265f773
"
,
0
,
10
);
for
(
String
v
:
tokenValue
)
{
// SaSession session = StpUtil.getSessionBySessionId(sid);
System
.
out
.
println
(
v
);
...
...
sa-token-demo-springboot/src/main/resources/application.yml
浏览文件 @
f2642453
...
...
@@ -8,7 +8,7 @@ spring:
# token名称 (同时也是cookie名称)
token-name
:
satoken
# token有效期,单位s 默认30天, -1代表永不过期
timeout
:
2592000
timeout
:
-1
# token临时有效期 (指定时间内无操作就视为token过期) 单位: 秒
activity-timeout
:
-1
# 是否允许同一账号并发登录 (为true时允许一起登录, 为false时新登录挤掉旧登录)
...
...
@@ -18,8 +18,6 @@ spring:
# token风格
token-style
:
uuid
# 是否从cookie里读取token
# is-read-cookie: false
# redis配置
...
...
sa-token-doc/doc/README.md
浏览文件 @
f2642453
<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.
9
.0
</h1>
<h1
align=
"center"
style=
"margin: 30px 0 30px; font-weight: bold;"
>
sa-token v1.
10
.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.
9
.0-2B9939"
></a>
<a
href=
"https://github.com/click33/sa-token"
><img
src=
"https://img.shields.io/badge/sa--token-v1.
10
.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>
...
...
@@ -77,7 +77,7 @@ sa-token的API众多,请恕此处无法为您逐一展示,更多示例请戳
## 涵盖功能
-
**登录验证**
—— 轻松登录鉴权,并提供五种细分场景值
-
**权限验证**
——
拦截违规调用
,不同角色不同授权
-
**权限验证**
——
适配RBAC模型
,不同角色不同授权
-
**Session会话**
—— 专业的数据缓存中心
-
**踢人下线**
—— 将违规用户立刻清退下线
-
**模拟他人账号**
—— 实时操作任意用户状态数据
...
...
@@ -89,6 +89,7 @@ sa-token的API众多,请恕此处无法为您逐一展示,更多示例请戳
-
**自动续签**
—— 提供两种token过期策略,灵活搭配使用,还可自动续签
-
**同端互斥登录**
—— 像QQ一样手机电脑同时在线,但是两个手机上互斥登录
-
**组件自动注入**
—— 零配置与Spring等框架集成
-
**会话治理**
—— 提供方便灵活的会话查询接口
-
**更多功能正在集成中...**
—— 如有您有好想法或者建议,欢迎加群交流
...
...
sa-token-doc/doc/index.html
浏览文件 @
f2642453
...
...
@@ -7,7 +7,7 @@
<meta
name=
"description"
content=
"Description"
>
<meta
name=
"viewport"
content=
"width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"
>
<meta
name=
"keywords"
content=
"sa-token|sa-token框架|sa-token文档|sa-token在线文档|权限认证框架"
>
<meta
name=
"description"
content=
"sa-token是一个JavaWeb权限认证框架,功能全面,上手简单,登录验证、权限验证、Session会话、踢人下线、集成Redis、前后台分离、模拟他人账号、多账号体系、注解式鉴权、花式token、自动续签、同端互斥登录、Spring集成...,零配置开箱即用,覆盖所有应用场景,你所需要的功能,这里都有"
>
<meta
name=
"description"
content=
"sa-token是一个JavaWeb权限认证框架,功能全面,上手简单,登录验证、权限验证、Session会话、踢人下线、集成Redis、前后台分离、模拟他人账号、多账号体系、注解式鉴权、花式token、自动续签、同端互斥登录、
会话治理、
Spring集成...,零配置开箱即用,覆盖所有应用场景,你所需要的功能,这里都有"
>
<link
rel=
"stylesheet"
href=
"https://unpkg.zhimg.com/docsify@4.11.3/lib/themes/vue.css"
>
<link
rel=
"stylesheet"
href=
"./lib/index.css"
>
<link
rel=
"shortcut icon"
type=
"image/x-icon"
href=
"logo.png"
>
...
...
@@ -38,7 +38,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.
9
.0</sub>
'
name
+=
'
<b style="font-size: 24px; vertical-align: middle;">sa-token</b> <sub>v1.
10
.0</sub>
'
window
.
$docsify
=
{
name
:
name
,
// 名字
repo
:
'
https://github.com/click33/sa-token
'
,
// github地址
...
...
sa-token-doc/doc/more/update-log.md
浏览文件 @
f2642453
# 更新日志
### 2021-1-6 @v1.10.0
-
新增:提供查询所有会话方案
**[重要]**
-
修复:修复token设置为永不过期时无法正常被顶下线的bug,感谢github用户 @zjh599245299 提出的bug
### 2021-1-6 @v1.9.0
-
优化:
`spring-boot-starter-data-redis`
由
`2.3.7.RELEASE`
改为
`2.3.3.RELEASE`
-
修复:补上注解拦截器里漏掉验证
`@SaCheckRole`
的bug
...
...
sa-token-doc/doc/start/download.md
浏览文件 @
f2642453
...
...
@@ -9,7 +9,7 @@
<dependency>
<groupId>
cn.dev33
</groupId>
<artifactId>
sa-token-spring-boot-starter
</artifactId>
<version>
1.
9
.0
</version>
<version>
1.
10
.0
</version>
</dependency>
```
...
...
sa-token-doc/doc/start/example.md
浏览文件 @
f2642453
...
...
@@ -18,7 +18,7 @@
<dependency>
<groupId>
cn.dev33
</groupId>
<artifactId>
sa-token-spring-boot-starter
</artifactId>
<version>
1.
9
.0
</version>
<version>
1.
10
.0
</version>
</dependency>
```
...
...
sa-token-doc/doc/use/dao-extend.md
浏览文件 @
f2642453
...
...
@@ -11,7 +11,7 @@
<dependency>
<groupId>
cn.dev33
</groupId>
<artifactId>
sa-token-dao-redis
</artifactId>
<version>
1.
9
.0
</version>
<version>
1.
10
.0
</version>
</dependency>
```
优点:兼容性好,缺点:session序列化后基本不可读,对开发者来讲等同于乱码
...
...
@@ -23,7 +23,7 @@
<dependency>
<groupId>
cn.dev33
</groupId>
<artifactId>
sa-token-dao-redis-jackson
</artifactId>
<version>
1.
9
.0
</version>
<version>
1.
10
.0
</version>
</dependency>
```
优点:session序列化后可读性强,可灵活手动修改,缺点:兼容性稍差
...
...
sa-token-doc/doc/use/session.md
浏览文件 @
f2642453
...
...
@@ -14,6 +14,7 @@ StpUtil.getSession(); // 获取当前账号id的Session (
StpUtil
.
getSession
(
true
);
// 获取当前账号id的Session, 并决定在Session尚未创建时,是否新建并返回
StpUtil
.
getSessionByLoginId
(
10001
);
// 获取账号id为10001的Session
StpUtil
.
getSessionByLoginId
(
10001
,
true
);
// 获取账号id为10001的Session, 并决定在Session尚未创建时,是否新建并返回
StpUtil
.
getSessionBySessionId
(
"xxxx-xxxx"
);
// 获取SessionId为xxxx-xxxx的Session, 在Session尚未创建时, 返回null
```
...
...
sa-token-doc/index.html
浏览文件 @
f2642453
...
...
@@ -7,7 +7,7 @@
<meta
name=
"description"
content=
"Description"
>
<meta
name=
"viewport"
content=
"width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"
>
<meta
name=
"keywords"
content=
"sa-token|sa-token框架|sa-token文档|sa-token在线文档|权限认证框架"
>
<meta
name=
"description"
content=
"sa-token是一个JavaWeb权限认证框架,功能全面,上手简单,登录验证、权限验证、Session会话、踢人下线、集成Redis、前后台分离、模拟他人账号、多账号体系、注解式鉴权、花式token、自动续签、同端互斥登录、Spring集成...,零配置开箱即用,覆盖所有应用场景,你所需要的功能,这里都有"
>
<meta
name=
"description"
content=
"sa-token是一个JavaWeb权限认证框架,功能全面,上手简单,登录验证、权限验证、Session会话、踢人下线、集成Redis、前后台分离、模拟他人账号、多账号体系、注解式鉴权、花式token、自动续签、同端互斥登录、
会话治理、
Spring集成...,零配置开箱即用,覆盖所有应用场景,你所需要的功能,这里都有"
>
<link
rel=
"stylesheet"
href=
"https://unpkg.zhimg.com/docsify@4.11.3/lib/themes/vue.css"
>
<link
rel=
"shortcut icon"
type=
"image/x-icon"
href=
"doc/logo.png"
>
<link
rel=
"stylesheet"
href=
"index.css"
>
...
...
@@ -43,10 +43,10 @@
<!-- 内容部分 -->
<div
class=
"main-box"
>
<div
class=
"content-box"
>
<h1>
sa-token
<small>
v1.
9
.0
</small></h1>
<h1>
sa-token
<small>
v1.
10
.0
</small></h1>
<div
class=
"sub-title"
>
一个JavaWeb轻量级权限认证框架,功能全面,上手简单
</div>
<!-- <p>0配置开箱即用,低学习成本</p> -->
<p>
登录验证、权限验证、Session会话、踢人下线、集成Redis、前后台分离、模拟他人账号、多账号体系、注解式鉴权、花式token、自动续签、同端互斥登录、Spring集成...
</p>
<p>
登录验证、权限验证、Session会话、踢人下线、集成Redis、前后台分离、模拟他人账号、多账号体系、注解式鉴权、花式token、自动续签、同端互斥登录、
会话治理、
Spring集成...
</p>
<p>
零配置开箱即用,覆盖所有应用场景,你所需要的功能,这里都有
</p>
<div
class=
"btn-box"
>
<a
href=
"https://github.com/click33/sa-token"
target=
"_blank"
>
GitHub
</a>
...
...
sa-token-spring-boot-starter/pom.xml
浏览文件 @
f2642453
...
...
@@ -7,7 +7,7 @@
<parent>
<groupId>
cn.dev33
</groupId>
<artifactId>
sa-token-parent
</artifactId>
<version>
1.
9
.0
</version>
<version>
1.
10
.0
</version>
</parent>
<packaging>
jar
</packaging>
...
...
@@ -19,7 +19,7 @@
<dependency>
<groupId>
cn.dev33
</groupId>
<artifactId>
sa-token-core
</artifactId>
<version>
1.
9
.0
</version>
<version>
1.
10
.0
</version>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录