sa-token
|
|
基于 Sa-Token v1.45.0 | 官方文档:https://sa-token.cc | GitHub:https://github.com/dromara/sa-token
Sa-Token 是一个轻量级 Java 权限认证框架,核心包零依赖,提供了完整的鉴权体系。StpUtil 是其核心门面工具类。
StpUtil.login() 会话登录、记住我模式、指定设备类型、登录扩展参数StpUtil.isLogin()/checkLogin()/getLoginId() 全套查询 API*@SaCheckLogin、@SaCheckPermission、@SaCheckRole、@SaIgnore、@SaCheckOr当用户需要以下场景时,激活此技能:
Step 1. 引入依赖 — 添加 sa-token-spring-boot-starter 依赖(根据SpringBoot版本选择)
Step 2. 配置框架 — application.yml 配置 token 名称、有效期、风格等
Step 3. 实现 StpInterface — 自定义权限加载器,返回权限码和角色集合
Step 4. 登录认证 — 调用 StpUtil.login(id) 完成会话登录
Step 5. 权限校验 — 使用 StpUtil 方法或注解进行权限/角色校验
Step 6. 路由拦截 — SaInterceptor + SaRouter 实现全局路由鉴权
Step 7. 集成测试 — 验证登录/注销/权限校验/注解鉴权全流程
// === 登录认证 ===
StpUtil.login(Object loginId); // 会话登录
StpUtil.login(10001, "PC"); // 指定设备类型
StpUtil.login(10001, true); // 指定记住我
StpUtil.login(10001, new SaLoginParameter()...); // 完整参数模式
StpUtil.logout(); // 当前会话注销
StpUtil.logout(10001); // 指定账号注销
StpUtil.logoutByTokenValue(token); // 指定Token注销
StpUtil.logoutByLoginId(10001, "PC"); // 指定账号+设备注销
StpUtil.kickout(10001); // 踢人下线
StpUtil.kickoutByTokenValue(token); // 根据Token值踢人
StpUtil.isLogin(); // 是否登录(true/false)
StpUtil.checkLogin(); // 校验登录(未登录抛NotLoginException)
// === 会话/Token查询 ===
StpUtil.getLoginId(); // 当前账号id
StpUtil.getLoginIdAsString()/AsInt()/AsLong(); // 类型化获取
StpUtil.getLoginIdDefaultNull(); // 未登录返回null
StpUtil.getLoginIdByToken(token); // 根据token查账号
StpUtil.getTokenValue(); // 当前token值
StpUtil.getTokenValueByLoginId(10001); // 获取指定账号的token值
StpUtil.getTokenListByLoginId(10001); // 获取指定账号所有token列表
StpUtil.getTokenName(); // token名称(satoken)
StpUtil.getTokenTimeout(); // 剩余有效期(秒)
StpUtil.getTokenInfo(); // 完整TokenInfo
StpUtil.setTokenValue("xxx-xxx"); // 手动设置当前会话token值
StpUtil.renewRefresh(); // 自动续签token有效期
StpUtil.getTerminalListByLoginId(10001); // 获取指定账号所有终端列表
// === 权限/角色校验 ===
StpUtil.getPermissionList(); // 权限码集合
StpUtil.hasPermission("user.add"); // boolean
StpUtil.checkPermission("user.add"); // 失败抛NotPermissionException
StpUtil.checkPermissionAnd("add","del","get"); // 全部拥有
StpUtil.checkPermissionOr("add","del","get"); // 至少一个
StpUtil.hasRole("admin"); // boolean
StpUtil.checkRole("admin"); // 失败抛NotRoleException
// === Session会话 ===
StpUtil.getSession(); // 当前账号Account-Session
StpUtil.getSessionByLoginId(10001); // 指定账号的Session
StpUtil.getTokenSession(); // 当前Token-Session
StpUtil.getTokenSessionByTokenValue("xxx-xxx"); // 按token值获取Token-Session
SaSessionCustomUtil.getSessionById("goods-10001"); // Custom-Session
| 主题 | 文件 | 来源 | |------|------|------| | 登录认证完整指南 | references/login-auth.md | GitHub | | 权限/角色认证 | references/jur-auth.md | GitHub | | 注解鉴权 | references/at-check.md | GitHub | | 路由拦截鉴权 | references/route-check.md | GitHub | | Session 会话 | references/session.md | GitHub | | 框架配置 | references/config.md | GitHub | | 踢人下线 | references/kickout.md | GitHub | | Token 有效期 | references/token-timeout.md | GitHub | | NotLoginException | references/not-login-scene.md | GitHub | | 前后端分离 & 记住我 | references/not-cookie.md | GitHub、remember-me | | Token 风格 & 前缀 | references/token-style.md | GitHub、token-prefix | | 登录参数详解 | references/login-parameter.md | GitHub | | 同端互斥登录 | references/mutex-login.md | GitHub | | 快速入门 | examples/quickstart.md | GitHub |
SaInterceptor@SaIgnore 只对 SaInterceptor 和 AOP 生效 — 自定义拦截器不受影响@SaCheckPermission 默认 AND 模式 — OR 模式需指定 mode = SaMode.ORStpUtil.logout() 注销范围可通过 logout-range 配置 — 默认只注销当前 tokenis-read-cookie: false本技能不收集、存储或传输任何用户数据。