网站首页 > 精选教程 正文
经过前两篇文章的体验,我已经初步接触了Sa-Token的登录、退出、在线状态检测以及前后端分离的实现。这次来体验Sa-Token部分常用配置。
sa-toekn.token-name token名称
首先是前文用到过的token-name,token-name用来指定token的名称,如果不指定,默认的名称是satoken,我们删掉所有配置来测试一下。
这时执行登陆,查看返回内容
可以看到默认的token名称是satoken,我们可以通过修改token-name配置,指定我们需要的token名称
sa-token:
token-name: token
再次登录
sa-toekn.timeout 超时时间
超时时间,默认是三十天,单位是秒,我们来配置个5秒超时,验证一下是否好用
sa-token:
token-name: token
timeout: 5
执行登录,然后查看登陆状态
5秒后再次查询登陆状态
sa-toekn.activity-timeout 临时超时时间
说实话看到这个介绍我还是有点开心的,因为曾经开发过类似的业务,但是还有什么比框架本身就支持来得更舒服呢?把超时时间注释掉,加上把临时有效期设置为5s再测试一波。
先登录,再多次查询登录状态,不出意外的5s以后掉线了[泣不成声],赶快看看文档,文档里写着:在每次直接或间接调用getLoginId()时进行一次过期检查与续签操作。想想也对,毕竟在需要身份认证的接口中每次访问都要获取用户Id的,没毛病,暂且先在检查登录状态接口获取一下ID进行返回,修改代码再测试。
// 查询登录状态,浏览器访问: http://localhost:9999/user/isLogin
@RequestMapping("isLogin")
public String isLogin() {
return "当前会话是否登录:" + StpUtil.isLogin() + (StpUtil.isLogin() ? "登录的Id:"+StpUtil.getLoginId() : "") ;
}
这次就没问题了,在不停地重新请求接口的过程中,没有发生掉线的情况
在5s无操作之后,再次刷新
这时候就正常掉线了,真的很方便。该功能测试完毕,修改成一个常用的超时时间,开始测试其他配置。
sa-toekn.is-concurrent 同账号并发登录(多地登录)
这个配置也是一个常用的配置,有些系统同一个账号同一时间只允许在一个设备上登录,有些系统则没有这样的限制,现在配置里增加:
sa-token:
# 是否允许同一账号并发登录
is-concurrent: true
再利用两个浏览器分别执行登陆,检查登录状态
可以看到两个浏览器都登录成功,并且得到了相同的token值,检查登录状态
也可以获取到相同的登录信息,我们修改配置为false,再次运行
sa-token:
# 是否允许同一账号并发登录
is-concurrent: false
首先分别执行登陆
再分别查看登陆状态
可以确定,首先登录的那个已经被挤下线了
sa-toekn.is-share 同账号并发登录是否共用Token
这个也是一个非常实用的功能,如果希望同账号在不同设备登陆时享有单独的超时时间、设备标签等,就可以不共用token,反之就可以公用token,保证账号一处登出,所有设备同时下线,增加安全性。
更多配置
官方文档提供详尽的配置项表格,有兴趣的可以去查看文档,可以说是非常实用了。
参数名称 | 类型 | 默认值 | 说明 |
tokenName | String | satoken | token名称 (同时也是cookie名称) |
timeout | long | 2592000 | token有效期,单位/秒 默认30天,-1代表永久有效 参考:token有效期详解 |
activityTimeout | long | -1 | token临时有效期 (指定时间内无操作就视为token过期) 单位: 秒, 默认-1 代表不限制 (例如可以设置为1800代表30分钟内无操作就过期) 参考:token有效期详解 |
isConcurrent | Boolean | true | 是否允许同一账号并发登录 (为true时允许一起登录, 为false时新登录挤掉旧登录) |
isShare | Boolean | true | 在多人登录同一账号时,是否共用一个token (为true时所有登录共用一个token, 为false时每次登录新建一个token) |
isReadBody | Boolean | true | 是否尝试从 请求体 里读取 Token |
isReadHead | Boolean | true | 是否尝试从 header 里读取 Token |
isReadCookie | Boolean | true | 是否尝试从 cookie 里读取 Token |
tokenStyle | String | uuid | token风格, 参考:自定义Token风格 |
dataRefreshPeriod | int | 30 | 默认dao层实现类中,每次清理过期数据间隔的时间 (单位: 秒) ,默认值30秒,设置为-1代表不启动定时清理 |
tokenSessionCheckLogin | Boolean | true | 获取 Token-Session 时是否必须登录 (如果配置为true,会在每次获取 Token-Session 时校验是否登录) |
autoRenew | Boolean | true | 是否打开自动续签 (如果此值为true, 框架会在每次直接或间接调用 getLoginId() 时进行一次过期检查与续签操作) |
tokenPrefix | String | null | token前缀, 例如填写 Bearer 实际传参 satoken: Bearer xxxx-xxxx-xxxx-xxxx 参考:自定义Token前缀 |
isPrint | Boolean | true | 是否在初始化配置时打印版本字符画 |
isLog | Boolean | false | 是否打印操作日志 |
jwtSecretKey | String | null | jwt秘钥 (只有集成 sa-token-temp-jwt 模块时此参数才会生效) |
idTokenTimeout | long | 86400 | Id-Token的有效期 (单位: 秒) |
basic | String | "" | Http Basic 认证的账号和密码 参考:Http Basic 认证 |
currDomain | String | null | 配置当前项目的网络访问地址 |
checkIdToken | Boolean | false | 是否校验Id-Token(部分rpc插件有效) |
sso | Object | new SaSsoConfig() | SSO 单点登录相关配置 |
cookie | Object | new SaCookieConfig() | Cookie配置对象 |
猜你喜欢
- 2024-11-26 关于大后台的权限管理设计
- 2024-11-26 基于Springboot的权限管理系统
- 2024-11-26 Sa-Token,让你的权限认证更简单
- 2024-11-26 Sa-Token之注解鉴权:优雅的将鉴权与业务代码分离
- 2024-11-26 Shiro 权限校验分析
- 2024-11-26 给女朋友讲某宝是如何设计用户权限管理的(一)
- 2024-11-26 基于SpringBoot 的MCMS系统,完全开源,直接商用太爽了
- 2024-11-26 再见前端!纯 Java 撸个后台管理系统,这框架用起来贼爽
- 2024-11-26 AOP编程_Android优雅权限框架(2)Demo完全解析
- 2024-11-26 6个顶级SpringCloud微服务开源项目,企业开发必备
你 发表评论:
欢迎- 04-11Java面试“字符串三兄弟”String、StringBuilder、StringBuffer
- 04-11Java中你知道几种从字符串中找指定的字符的数量
- 04-11探秘Java面试中问的最多的String、StringBuffer、StringBuilder
- 04-11Python字符串详解与示例(python字符串的常见操作)
- 04-11java正则-取出指定字符串之间的内容
- 04-11String s1 = new String("abc");这句话创建了几个字符串对象?
- 04-11java判断字符串中是否包含某个字符
- 04-11关于java开发中正确的发牌逻辑编写规范
- 最近发表
-
- Java面试“字符串三兄弟”String、StringBuilder、StringBuffer
- Java中你知道几种从字符串中找指定的字符的数量
- 探秘Java面试中问的最多的String、StringBuffer、StringBuilder
- Python字符串详解与示例(python字符串的常见操作)
- java正则-取出指定字符串之间的内容
- String s1 = new String("abc");这句话创建了几个字符串对象?
- java判断字符串中是否包含某个字符
- 关于java开发中正确的发牌逻辑编写规范
- windows、linux如何后台运行jar(并且显示进程名)
- 腾讯大佬私人收藏,GitHub上最受欢迎的100个JAVA库,值得学习
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)