Sa-Token - 功能最全的 Java 权限认证框架( 二 )


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 权限认证框架】


推荐阅读