package com.pj.satoken;import java.util.ArrayList;import java.util.List;import org.springframework.stereotype.Component;import cn.dev33.satoken.stp.StpInterface;/** * 自定义权限验证接口扩展*/@Component// 保证此类被SpringBoot扫描,完成sa-token的自定义权限验证扩展 public class StpInterfaceImpl implements StpInterface {/*** 返回一个账号所拥有的权限码集合*/@Overridepublic List<String> getPermissionList(Object loginId, String loginKey) {// 本list仅做模拟,实际项目中要根据具体业务逻辑来查询权限List<String> list = new ArrayList<String>();list.add("101");list.add("user-add");list.add("user-delete");list.add("user-update");list.add("user-get");list.add("article-get");return list;}/*** 返回一个账号所拥有的角色标识集合 (权限与角色可分开校验)*/@Overridepublic List<String> getRoleList(Object loginId, String loginKey) {// 本list仅做模拟,实际项目中要根据具体业务逻辑来查询角色List<String> list = new ArrayList<String>();list.add("admin");list.add("super-admin");return list;}}然后,我们就可以用以下的 API 来实现鉴权了:
// 当前账号是否含有指定权限, 返回true或false StpUtil.hasPermission("user:update");// 当前账号是否含有指定权限, 如果验证未通过,则抛出异常: NotPermissionException StpUtil.checkPermission("user:update");// 当前账号是否含有指定权限 [指定多个,必须全部验证通过] StpUtil.checkPermissionAnd("user:update", "user:delete");// 当前账号是否含有指定权限 [指定多个,只要其一验证通过即可] StpUtil.checkPermissionOr("user:update", "user:delete");除此之外,Sa-Token 还有很多“一行式”的代码,可以通过高度抽象的 API 完成复杂的功能:
StpUtil.setLoginId(10001);// 标记当前会话登录的账号idStpUtil.getLoginId();// 获取当前会话登录的账号idStpUtil.isLogin();// 获取当前会话是否已经登录, 返回true或falseStpUtil.logout();// 当前会话注销登录StpUtil.logoutByLoginId(10001);// 让账号为10001的会话注销登录(踢人下线)StpUtil.hasRole("super-admin");// 查询当前账号是否含有指定角色标识, 返回true或falseStpUtil.hasPermission("user:add");// 查询当前账号是否含有指定权限, 返回true或falseStpUtil.getSession();// 获取当前账号id的SessionStpUtil.getSessionByLoginId(10001);// 获取账号id为10001的SessionStpUtil.getTokenValueByLoginId(10001);// 获取账号id为10001的token令牌值StpUtil.setLoginId(10001, "PC");// 指定设备标识登录StpUtil.logoutByLoginId(10001, "PC");// 指定设备标识进行强制注销 (不同端不受影响)StpUtil.switchTo(10044);// 将当前会话身份临时切换为其它账号
总结Sa-Token 作为一个轻量级 Java 权限认证框架,接口简洁,功能强大,简单易用,可扩展性强,能够适应多种业务场景,无需繁琐的配置文件和和全局过滤器,就能实现复杂和身份认证和权限控制,十分值得尝试使用 。
【Sa-Token - 功能最全的 Java 权限认证框架】
推荐阅读
- Chrome 浏览器测试版新增阅读清单功能,教你如何开启
- 肾功能不全吃什么蔬菜最好,肾功能不全吃什么好
- FANUC机器人示教编程:原始路径恢复功能介绍与使用方法
- locate命令-快速查找文件或目录
- 养生茶配方大全及功能,养生茶配方大全
- 短视频|彻底解放双眼!消息称抖音正测试“听视频”功能:锁屏也能继续播
- 车载广告机有哪些功能呢
- 红茶对卵巢功能的影响,红茶的禁忌
- 最全Tomcat入门指南
- 玉蝴蝶搭配什么泡水喝好,玉蝴蝶茶的功效和功能
