Sa-Token
Posted 深海的渔
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Sa-Token相关的知识,希望对你有一定的参考价值。
Sa-Token 是一个轻量级Java权限认证框架,主要解决了:登录认证、权限认证、Session会话、单点登录、OAuth2.0、微服务网关鉴权 等一系列权限相关的问题。
Sa-Token的API设计非常简单:
// 在登录时写入当前会话的账号id
StpUtil.login(100203);
// 然后在需要校验登录处调用以下方法:
// 如果当前会话未登录,这句代码会抛出 `NotLoginException` 异常
StpUtil.checkLogin();
权限认证:(只有具备 "user:add" 权限的会话才可以进入请求)
@SaCheckPermission("user:add")
@RequestMapping("/user/login")
public String login(User user)
return "用户";
将某个账号强制下线(对方再次访问系统时会抛出 ‘NotLoginExpection’ 异常)
// 将账号id为 100203 的会话踢下线
StpUtil.kickout(100203);
在Sa-Token中大部分功能都可以通过一行代码来完成:
StpUtil.login(100203); // 标记当前会话登录的账号id
StpUtil.getLoginId(); // 获取当前会话登录的账号id
StpUtil.isLogin(); // 获取当前会话是否已经登录, 返回true或false
StpUtil.logout(); // 当前会话注销登录
StpUtil.kickout(100203); // 将账号为100203的会话踢下线
StpUtil.hasRole("admin"); // 查询当前账号是否含有指定角色标识, 返回true或false
StpUtil.hasPermission("user:add"); // 查询当前账号是否含有指定权限, 返回true或false
StpUtil.getSession(); // 获取当前账号id的Session
StpUtil.getSessionByLoginId(100203); // 获取账号id为100203的Session
StpUtil.getTokenValueByLoginId(100203); // 获取账号id为100203的token令牌值
StpUtil.login(100203, "PC"); // 指定设备标识登录,常用于“同端互斥登录”
StpUtil.kickout(100203, "PC"); // 指定账号指定设备标识踢下线 (不同端不受影响)
StpUtil.openSafe(120); // 在当前会话开启二级认证,有效期为120秒
StpUtil.checkSafe(); // 校验当前会话是否处于二级认证有效期内,校验失败会抛出异常
StpUtil.switchTo(100233); // 将当前会话身份临时切换为其它账号
注解式鉴权 ---将鉴权和代码进行分离
@SaCheckLogin
: 登录认证 —— 只有登录之后才能进入该方法@SaCheckRole("admin")
: 角色认证 —— 必须具有指定角色标识才能进入该方法@SaCheckPermission("user:add")
: 权限认证 —— 必须具有指定权限才能进入该方法@SaCheckSafe
: 二级认证校验 —— 必须二级认证之后才能进入该方法@SaCheckBasic
: HttpBasic认证 —— 只有通过 Basic 认证后才能进入该方法
Sa-Token简单使用
原文地址:再见 Shiro!权限认证我选择 Sa-Token:简单、优雅!
官网API:Sa-Token
以上是关于Sa-Token的主要内容,如果未能解决你的问题,请参考以下文章