百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程文章 > 正文

轻量级 Java 权限认证框架Sa-Token初体验(三)

qiyuwang 2024-11-05 12:23 45 浏览 0 评论

经过前两篇文章的体验,我已经初步接触了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配置对象

相关推荐

PayPal严重漏洞可通过不安全的JAVA反序列化对象

在2015年12月,我在PayPal商业网站(manager.paypal.com)中发现了一个严重的漏洞,这个漏洞的存在,使得我可以通过不安全的JAVA反序列化对象,在PayPal的网站服务器上远程...

提醒:Apache Dubbo存在反序列化漏洞

背景:近日监测到ApacheDubbo存在反序列化漏洞(CVE-2019-17564),此漏洞可导致远程代码执行。ApacheDubbo是一款应用广泛的高性能轻量级的JavaRPC分布式服务框架...

【预警通报】关于WebLogicT3存在反序列化高危漏洞的预警通报

近日,我中心技术支撑单位监测到WebLogicT3存在反序列化0day高危漏洞,攻击者可利用T3协议进行反序列化漏洞实现远程代码执行。...

Apache dubbo 反序列化漏洞(CVE-2023-23638)分析及利用探索

在对Apachedubbo的CVE-2023-23638漏洞分析的过程中,通过对师傅们对这个漏洞的学习和整理,再结合了一些新学的技巧运用,从而把这个漏洞的利用向前推了一步。整个过程中的研究思路以及...

案例|WebLogic反序列化漏洞攻击分析

目前网络攻击种类越来越多,黑客的攻击手段也变得层出不穷,常规的防护手段通常是对特征进行识别,一旦黑客进行绕过等操作,安全设备很难发现及防御。通过科来网络回溯分析系统可以全景还原各类异常网络行为,记录所...

【预警通报】关于ApacheOFBizRMI反序列化远程代码 执行高危漏洞的预警通报

近日,我中心技术支撑单位监测发现ApacheOFBiz官方发布安全更新,修复了一处远程代码执行漏洞。成功利用该漏洞的攻击者可造成任意代码执行,控制服务器。该漏洞编号:CVE-2021-26295,安...

关于OracleWebLogic wls9-async组件存在反序列化远程命令执行高危漏洞的预警通报

近日,国家信息安全漏洞共享平台(CNVD)公布了OracleWebLogicwls9-async反序列化远程命令执行漏洞。攻击者利用该漏洞,可在未授权的情况下远程执行命令。该漏洞安全级别为“高危”。现...

Rust语言从入门到精通系列 - Serde序列化/反序列化模块入门指北

Serde是一个用于序列化和反序列化Rust数据结构的库。它支持JSON、BSON、YAML等多种格式,并且可以自定义序列化和反序列化方式。Serde的特点是代码简洁、易于使用、性能高效。...

Java反序列化漏洞详解(java反序列化漏洞利用)

Java反序列化漏洞从爆出到现在快2个月了,已有白帽子实现了jenkins,weblogic,jboss等的代码执行利用工具。本文对于Java反序列化的漏洞简述后,并对于Java反序列化的Poc进行详...

关于Oracle WebLogic Server存在反序列化远程代码执行漏洞的安全公告

安全公告编号:CNTA-2018-00222018年7月18日,国家信息安全漏洞共享平台(CNVD)收录了OracleWebLogicServer反序列化远程代码执行漏洞(CNVD-2018-13...

CVE-2020-9484 Apache Tomcat反序列化漏洞浅析

本文是i春秋论坛作家「Ybwh」表哥原创的一篇技术文章,浅析CVE-2020-9484ApacheTomcat反序列化漏洞。01漏洞概述这次是因为错误配置和org.apache.catalina....

告别脚本小子系列丨JAVA安全(8)——反序列化利用链(下)

0x01前言...

关于WebLogic反序列化高危漏洞的紧急预警通报

近日,WebLogic官方发布WebLogic反序列化漏洞的紧急预警通告,利用该漏洞可造成远程代码执行并直接控制Weblogic服务器,危害极大。该漏洞编号为:CVE-2019-2890,安全级别为“...

高危!Fastjson反序列化漏洞风险通告

漏洞描述...

学习Vulhub的Java RMI Registry 反序列化漏洞

这个实验,我们先通过dnslog演示命令执行,然后通过反弹shell获得root权限。JavaRemoteMethodInvocation用于在Java中进行远程调用。RMI存在远程bind的...

取消回复欢迎 发表评论: