惊了,还有一行代码实现登录认证的框架!
The following article is from 开源指南 Author 开源君
点击关注公众号,一周多次包邮送书
哈喽,大家好,我是开源君,一个资深的互联网玩家,致力于为大家分享各领域优质开源项目。
各位开源老铁们,最近公众号改版了,大家记得星标开源指南
,第一时间收到我们优质内容的更新!
最近很多读者跳槽少拿了很多 offer,其实开源君觉得主要原因和算法能力有关,建议大家去阅读开源君昨天的算法推荐,此处为传送门。
今天开源君给大家介绍的项目为Sa-Token
,一个轻量级 Java 权限认证框架,让鉴权变得简单、优雅。
项目介绍
Sa-Token 是一个轻量级 Java 权限认证框架,主要解决:登录认证、权限认证、Session会话、单点登录、OAuth2.0、微服务网关鉴权等一系列权限相关问题。Sa-Token 的 API 设计非常简单。使用下面简单的语句我们就可以完成登录认证。
// 在登录时写入当前会话的账号id
StpUtil.login(10001);
// 然后在需要校验登录处调用以下方法:
// 如果当前会话未登录,这句代码会抛出 `NotLoginException` 异常
StpUtil.checkLogin();
权限认证示例
@SaCheckPermission("user:add")
@RequestMapping("/user/insert")
public String insert(SysUser user) {
// ...
return "用户增加";
}
将某个账号踢下线
// 将账号id为 10001 的会话踢下线
StpUtil.kickout(10001);
在 Sa-Token 中,绝大多数功能都可以 一行代码 完成:
StpUtil.login(10001); // 标记当前会话登录的账号id
StpUtil.getLoginId(); // 获取当前会话登录的账号id
StpUtil.isLogin(); // 获取当前会话是否已经登录, 返回true或false
StpUtil.logout(); // 当前会话注销登录
StpUtil.kickout(10001); // 将账号为10001的会话踢下线
StpUtil.hasRole("super-admin"); // 查询当前账号是否含有指定角色标识, 返回true或false
StpUtil.hasPermission("user:add"); // 查询当前账号是否含有指定权限, 返回true或false
StpUtil.getSession(); // 获取当前账号id的Session
StpUtil.getSessionByLoginId(10001); // 获取账号id为10001的Session
StpUtil.getTokenValueByLoginId(10001); // 获取账号id为10001的token令牌值
StpUtil.login(10001, "PC"); // 指定设备标识登录,常用于“同端互斥登录”
StpUtil.kickout(10001, "PC"); // 指定账号指定设备标识踢下线 (不同端不受影响)
StpUtil.openSafe(120); // 在当前会话开启二级认证,有效期为120秒
StpUtil.checkSafe(); // 校验当前会话是否处于二级认证有效期内,校验失败会抛出异常
StpUtil.switchTo(10044); // 将当前会话身份临时切换为其它账号
就算不用跑代码,看一下 api 名称,也能看出大多数 api 的用法。这个项目有很全的文档可以查看,开源君觉得这是使用一个框架很重要的一点。
功能列表
登录认证 权限认证 Session 会话 踢人下线 账号封禁 持久层扩展 分布式会话 微服务网关鉴权 单点登录 OAuth2.0 认证 二级认证 Basic认证 独立 Redis 临时 Token 验证 他人账号 身份切换 前后台分离 同端互斥登录 多账号认证体系 花式token生成 注解式鉴权 路由拦截式鉴权 自动续签 会话治理 记住我模式 密码加密 全局侦听器 开箱即用
功能很是齐全,开源君看了都心动了,赶忙想去试一试。
推荐阅读
• 京东一面:MySQL 主备延迟有哪些坑?主备切换策略• 展开操作符:一家人就这么被拆散了• 给32位系统装8g内存条能用吗?为什么?• React内部让人迷惑的性能优化策略• 推荐 5 个 YYDS 的 Java 项目• 数据库精选 60 道面试题• 阿里面试:周芷若和韩小昭的并查集
👇更多内容请点击👇