查看原文
其他

惊了,还有一行代码实现登录认证的框架!

The following article is from 开源指南 Author 开源君

点击关注公众号,一周多次包邮送书

来源:经授权转自 开源指南(ID:openguide)作者:开源君


哈喽,大家好,我是开源君,一个资深的互联网玩家,致力于为大家分享各领域优质开源项目。

各位开源老铁们,最近公众号改版了,大家记得星标开源指南,第一时间收到我们优质内容的更新!

最近很多读者跳槽少拿了很多 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生成
  • 注解式鉴权
  • 路由拦截式鉴权
  • 自动续签
  • 会话治理
  • 记住我模式
  • 密码加密
  • 全局侦听器
  • 开箱即用

功能很是齐全,开源君看了都心动了,赶忙想去试一试。


·················END·················

推荐阅读

•  京东一面:MySQL 主备延迟有哪些坑?主备切换策略•  展开操作符:一家人就这么被拆散了‍•  给32位系统装8g内存条能用吗?为什么?•  React内部让人迷惑的性能优化策略•  推荐 5 个 YYDS 的 Java 项目•  数据库精选 60 道面试题•  阿里面试:周芷若和韩小昭的并查集

👇更多内容请点击👇

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存