SpringBoot 使用 Sa-Token 实现账号封禁、分类封禁、阶梯封禁

一、需求分析

之前的章节中,我们学习了 踢人下线 和 强制注销 功能,用于清退违规账号。在部分场景下,我们还需要将其 账号封禁,以防止其再次登录。

Sa-Token 是一个轻量级 java 权限认证框架,主要解决登录认证、权限认证、单点登录、OAuth2、微服务网关鉴权 等一系列权限相关问题。 Gitee 开源地址:gitee.com/dromara/sa-…

Sa-Token 提供的封禁操作有三种:

  • 账号封禁:封禁掉一个账号的登录能力,使其无法登录。
  • 分类封禁:封禁掉一个账号的部分业务操作权限,不影响账号的整体登录等基础功能。
  • 阶梯封禁:按照不同的违规程度,给与其不同的封禁力度。

本篇文章将介绍在 Sa-Token 中如何完成上述三种封禁操作。

首先在项目中引入 Sa-Token 依赖:

 

xml

复制代码

<!-- Sa-Token 权限认证 --> <dependency> <groupId>cn.dev33</groupId> <artifactId>sa-token-spring-boot-starter</artifactId> <version>1.34.0</version> </dependency>

注:如果你使用的是 SpringBoot 3.x,只需要将 sa-token-spring-boot-starter 修改为 sa-token-spring-boot3-starter 即可。

二、账号封禁

对指定账号进行封禁:

 

java

复制代码

// 封禁指定账号 StpUtil.disable(10001, 86400);

参数含义:

  • 参数1:要封禁的账号id。
  • 参数2:封禁时间,单位:秒,此为 86400秒 = 1天(此值为 -1 时,代表永久封禁)。

注意点:对于正在登录的账号,将其封禁并不会使它立即掉线,如果我们需要它即刻下线,可采用先踢再封禁的策略,例如:

 

java

复制代码

// 先踢下线 StpUtil.kickout(10001); // 再封禁账号 StpUtil.disable(10001, 86400);

待到下次登录时,我们先校验一下这个账号是否已被封禁:

 

java

复制代码

// 校验指定账号是否已被封禁,如果被封禁则抛出异常 `DisableServiceException` StpUtil.checkDisable(10001); // 通过校验后,再进行登录: StpUtil.login(10001);

旧版本在 StpUtil.login() 时会自动校验账号是否被封禁,v1.31.0 之后将 校验封禁 和 登录 两个动作分离成两个方法,不再自动校验,请注意其中的逻辑更改。

此模块所有方法:

 

java

复制代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值