项目简介
Sa-Token是一个轻量级Java权限认证框架,主要解决:登录认证、权限认证、Session会话、单点登录、OAuth2.0 等一系列权限相关问题。
框架集成简单、开箱即用、API设计清爽,通过Sa-Token,你将以一种极其简单的方式实现系统的权限认证部分。
功能结构图
认证流程图
项目特性
API简单易用,文档介绍详细,且提供直接可用的集成示例。支持三种模式,不论是否跨域、是否共享Redis,都可以完美解决。安全性高:内置域名校验、Ticket校验、秘钥校验等,杜绝Ticket劫持、Token窃取等常见攻击手段(文档讲述攻击原理和防御手段)不丢参数:作者曾试验多个单点登录框架,均有参数丢失的情况,比如重定向之前是:?id=1&name=2
,登录成功之后就变成了:?id=1,Sa-Token-SSO
内有专门的算法保证了参数不丢失,登录成功之后原路返回页面无缝集成:由于Sa-Token本身就是一个权限认证框架,因此你可以只用一个框架同时解决权限认证 + 单点登录问题,让你不再到处搜索:xxx单点登录与xxx权限认证如何整合……高可定制:Sa-Token-SSO模块对代码架构侵入性极低,结合Sa-Token本身的路由拦截特性,你可以非常轻松的定制化开发代码示例
登录验证示例
// 在登录时写入当前会话的账号idStpUtil.login(10001);// 然后在任意需要校验登录处调用以下API// 如果当前会话未登录,这句代码会抛出 `NotLoginException`异常StpUtil.checkLogin();复制代码
权限认证示例
@SaCheckPermission("user:add")@RequestMapping("/user/insert")public String insert(SysUser user) {// ... return "用户增加";}复制代码
一行代码实现功能
StpUtil.login(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.login(10001, "PC");// 指定设备标识登录StpUtil.logoutByLoginId(10001, "PC");// 指定设备标识进行强制注销 (不同端不受影响)StpUtil.switchTo(10044); // 将当前会话身份临时切换为其它账号复制代码
需要相关java资料的可以扫一扫 备注【java】