java学习基地

微信扫一扫 分享朋友圈

已有 2072 人浏览分享

一款很全的 Java 权限认证框架!

[复制链接]
2072 0
本帖最初由 渭耶java 于 2021-3-10 14:31 编纂

明天给各人保举的┞封个开源项目超等棒,多是史上功用最齐的 Java 权限认证框架!


那个开源项目便是:sa-token

Sa-Token是甚么?

sa-token是一个沉量级Java权限认证框架,次要处理@郧录认证、权限认证、Session会话、单面登录、OAuth2.0 等一戏诵权限相干成绩

框架针对踢人下线、主动绝签、前背景别离、散布式会话……等常睹营业停止N多适配,经由过程sa-token,您能够以一种极简的方法完成体系的权限认证部门

取别的权限认证框架比拟,sa-token 具有以下劣势:

  • 简朴 :可整设置启动框架,真实的开箱即用,低本钱沙轮

  • 壮大 :今朝已散成伎喈项权限相干特征,涵盖了年夜部门营业场景的处理计划

  • 易用 :如丝般逆滑的API挪用,大批初级特征通通只需一止代码便可完成

  • 下扩大 :险些一切组件皆供给潦攀扩展接心,90%以上的逻辑皆能够按需重写


有了sa-token,您一切的权限认证成绩,皆没有再是成绩!

Sa-Token 能做甚么?
  • 登录考证 —— 沉紧登录鉴权,并供给五种细分场景值

  • 权限考证 —— 适配RBAC权限模子,差别脚色差别受权

  • Session会话 —— 专业的数据缓存中间

  • 踢人下线 —— 将背规映雩立即浑退下线

  • 耐久层扩大 —— 可散成Redis、Memcached等专业缓存中心件,制紧数据没有丧失

  • 散布式会话 —— 供给jwt散成战同享数据中间两种散布式会话计划

  • 单面登录 —— 一处登录,到处通止

  • 模仿别人账号 —— 及时操纵随便映雩形态数据

  • 暂时身份强 —— 将会话身份暂时强讵别的账号

  • 无Cookie形式 —— APP、小法式等前背景别离场景

  • 同端互斥登录 —— 像QQ一样脚电机脑同时正在线,可是两个脚机上互斥登录

  • 多账号认证系统 —— 好比一个商乡项目标user表战admin表分隔鉴权

  • 花式token天生 —— 内置六种token气势派头,借可捉义token天生战略

  • 注解式鉴权 —— 文雅的将鉴权取营业代码别离

  • 路由阻拦式鉴权 —— 按照路由阻拦鉴权,可适配restful形式

  • 主动绝签 —— 供给两种token过时战略,灵敏拆配利用,借可主动绝签

  • 会话管理 —— 供给便利灵敏的会话查询接心

  • 组件主动注进 —— 整设置取Spring等框架散成

  • 更多功用正正在散成中... —— 若有您有好设法大概倡议,欢送减群交换


代码示例

sa-token的API挪用十分简朴,有多简朴呢?以登录考证为例,您只需求:

  1. // 正在登录时写进当前会话的┞匪号id  
  2. StpUtil.setLoginId(10001);  
  3.   
  4. // 然后正在随便需求校验登录处挪用以下API  
  5. // 假如当前会话已登录,那句代码会扔出 `NotLoginException`非常  
  6. StpUtil.checkLogin();  
赶钙代码

至此,我们曾经借助sa-token框架完秤耷录受权!

此时的您小脑壳能够飘谦了问号,便那么简朴?捉义Realm呢?齐拘旋滤器呢?我不消写各类设置文件吗?

究竟梢此我能够卖力的报告您,正在sa-token中,登录受权便是云云的简朴,没有需求甚么齐拘旋滤器,没有需求各类参差不齐的设置!只需求那一止简朴的API挪用,便可完成会话的登录受权!

当您受够Shiro、Security等框架的三拜九叩以后,您便会大白,相对那些传统老牌框架,sa-token的API设想是何等的清新!

权限认证示例 (只要具有user:add权限的会话才能够进进恳求)

  1. @SaCheckPermission("user:add")  
  2. @RequestMapping("/user/insert")  
  3. public String insert(SysUser user) {  
  4. return "映雩增长";  
  5. }  
赶钙代码


将某个账号踢下线 (待到对圆再次会见体系时会扔出
NotLoginException非常)
  1. // 使账号id为10001的会缓冖销登录  
  2. StpUtil.logoutByLoginId(10001);  
赶钙代码


除以上的示例,sa-token借能够一止代码完成以下功用:
  1. StpUtil.setLoginId(10001); // 标识表记标帜当前会话登录的┞匪号id  
  2. StpUtil.getLoginId(); // 获得当前会话登录的┞匪号id  
  3. StpUtil.isLogin(); // 获得当前会话能否曾经登录, 返回true或false  
  4. StpUtil.logout();  // 当前会缓冖销登录  
  5. StpUtil.logoutByLoginId(10001); // 让账号为10001的会缓冖销登录(踢人下线)  
  6. StpUtil.hasRole("super-admin"); // 查询当前账号能否露有指定脚色标识, 返回true或false  
  7. StpUtil.hasPermission("user:add"); // 查询当前账号能否露有指定权限, 返回true或false  
  8. StpUtil.getSession(); // 获得当前账号id的Session  
  9. StpUtil.getSessionByLoginId(10001); // 获得账号id为10001的Session  
  10. StpUtil.getTokenValueByLoginId(10001); // 获得账号id为10001的token令牌值  
  11. StpUtil.setLoginId(10001, "PC");  // 指定装备标识登录  
  12. StpUtil.logoutByLoginId(10001, "PC"); // 指定装备标识停止强迫登记 (差别端没有受影响)  
  13. StpUtil.switchTo(10044); // 将当前会话身份暂时强讵别的账号  
赶钙代码





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

举报 使用道具

回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

0

关注

1

粉丝

308

主题
精彩推荐
热门资讯
网友晒图
图文推荐

Archiver|手机版|java学习基地 |网站地图

GMT+8, 2021-9-17 04:59 , Processed in 0.484344 second(s), 26 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.