天气与日历 切换到窄版

 找回密码
 立即注册

QQ登录

只需一步,快速开始

限时开通VIP永久会员,可免费下载所有附件
查看: 45|回复: 0

[Java源码] 轻量级 Java 权限认证框架,让鉴权变得简单、优雅

[复制链接]

2680

主题

0

回帖

2819

积分

管理员

积分
2819
发表于 2024-11-4 20:25:19 | 显示全部楼层 |阅读模式
轻量级 Java 权限认证框架,让鉴权变得简单、优雅!—— 登录认证、权限认证、分布式Session会话、微服务网关鉴权、单点登录、OAuth2.0
Sa-Token 是一个轻量级 Java 权限认证框架,主要解决:登录认证、权限认证、单点登录、OAuth2.0、分布式Session会话、微服务网关鉴权 等一系列权限相关问题。
Sa-Token 旨在以简单、优雅的方式完成系统的权限认证部分,以登录认证为例,你只需要:
  • // 会话登录,参数填登录人的账号id
  • StpUtil.login(10001);

[color=rgb(51, 102, 153) !important]复制代码

无需实现任何接口,无需创建任何配置文件,只需要这一句静态代码的调用,便可以完成会话登录认证。
如果一个接口需要登录后才能访问,我们只需调用以下代码:
  • // 校验当前客户端是否已经登录,如果未登录则抛出 `NotLoginException` 异常
  • StpUtil.checkLogin();

[color=rgb(51, 102, 153) !important]复制代码

在 Sa-Token 中,大多数功能都可以一行代码解决:
踢人下线:
  • // 将账号id为 10077 的会话踢下线
  • StpUtil.kickout(10077);

[color=rgb(51, 102, 153) !important]复制代码

权限认证:
  • // 注解鉴权:只有具备 `user:add` 权限的会话才可以进入方法
  • @SaCheckPermission("user:add")
  • public String insert(SysUser user) {
  •     // ...
  •     return "用户增加";
  • }

[color=rgb(51, 102, 153) !important]复制代码

路由拦截鉴权:
  • // 根据路由划分模块,不同模块不同鉴权
  • registry.addInterceptor(new SaInterceptor(handler -> {
  •         SaRouter.match("/user/**", r -> StpUtil.checkPermission("user"));
  •         SaRouter.match("/admin/**", r -> StpUtil.checkPermission("admin"));
  •         SaRouter.match("/goods/**", r -> StpUtil.checkPermission("goods"));
  •         SaRouter.match("/orders/**", r -> StpUtil.checkPermission("orders"));
  •         SaRouter.match("/notice/**", r -> StpUtil.checkPermission("notice"));
  •         // 更多模块...
  • })).addPathPatterns("/**");

[color=rgb(51, 102, 153) !important]复制代码

当你受够 Shiro、SpringSecurity 等框架的三拜九叩之后,你就会明白,相对于这些传统老牌框架,Sa-Token 的 API 设计是多么的简单、优雅!
Sa-Token 功能模块一览
Sa-Token 目前主要五大功能模块:登录认证、权限认证、单点登录、OAuth2.0、微服务鉴权。
  • 登录认证 —— 单端登录、多端登录、同端互斥登录、七天内免登录
  • 权限认证 —— 权限认证、角色认证、会话二级认证
  • Session会话 —— 全端共享Session、单端独享Session、自定义Session
  • 踢人下线 —— 根据账号id踢人下线、根据Token值踢人下线
  • 账号封禁 —— 登录封禁、按照业务分类封禁、按照处罚阶梯封禁
  • 持久层扩展 —— 可集成Redis、Memcached等专业缓存中间件,重启数据不丢失
  • 分布式会话 —— 提供jwt集成、共享数据中心两种分布式会话方案
  • 微服务网关鉴权 —— 适配Gateway、ShenYu、Zuul等常见网关的路由拦截认证
  • 单点登录 —— 内置三种单点登录模式:无论是否跨域、是否共享Redis,都可以搞定
  • OAuth2.0认证 —— 轻松搭建 OAuth2.0 服务,支持openid模式
  • 二级认证 —— 在已登录的基础上再次认证,保证安全性
  • Basic认证 —— 一行代码接入 Http Basic 认证
  • 独立Redis —— 将权限缓存与业务缓存分离
  • 临时Token认证 —— 解决短时间的Token授权问题
  • 模拟他人账号 —— 实时操作任意用户状态数据
  • 临时身份切换 —— 将会话身份临时切换为其它账号
  • 前后台分离 —— APP、小程序等不支持Cookie的终端
  • 同端互斥登录 —— 像QQ一样手机电脑同时在线,但是两个手机上互斥登录
  • 多账号认证体系 —— 比如一个商城项目的user表和admin表分开鉴权
  • Token风格定制 —— 内置六种Token风格,还可:自定义Token生成策略、自定义Token前缀
  • 注解式鉴权 —— 优雅的将鉴权与业务代码分离
  • 路由拦截式鉴权 —— 根据路由拦截鉴权,可适配restful模式
  • 自动续签 —— 提供两种Token过期策略,灵活搭配使用,还可自动续签
  • 会话治理 —— 提供方便灵活的会话查询接口
  • 记住我模式 —— 适配[记住我]模式,重启浏览器免验证
  • 密码加密 —— 提供密码加密模块,可快速MD5、SHA1、SHA256、AES、RSA加密
  • 全局侦听器 —— 在用户登陆、注销、被踢下线等关键性操作时进行一些AOP操作
  • 开箱即用 —— 提供SpringMVC、WebFlux等常见web框架starter集成包,真正的开箱即用
功能结构图:
Sa-Token-SSO 单点登录
Sa-Token-SSO 由简入难划分为三种模式,解决不同架构下的 SSO 接入问题:
[td]
系统架构
采用模式
简介
文档链接
前端同域 + 后端同 Redis
模式一
共享Cookie同步会话
前端不同域 + 后端同 Redis
模式二
URL重定向传播会话
前端不同域 + 后端 不同Redis
模式三
Http请求获取会话
  • 前端同域:就是指多个系统可以部署在同一个主域名之下,比如:c1.domain.com、c2.domain.com、c3.domain.com
  • 后端同Redis:就是指多个系统可以连接同一个Redis。PS:这里并不需要把所有项目的数据都放在同一个Redis中,Sa-Token提供了 [权限缓存与业务缓存分离] 的解决方案,详情戳:Alone独立Redis插件
  • 如果既无法做到前端同域,也无法做到后端同Redis,那么只能走模式三,Http请求获取会话(Sa-Token对SSO提供了完整的封装,你只需要按照示例从文档上复制几段代码便可以轻松集成)
Sa-Token-OAuth2 授权认证
Sa-OAuth2 模块分为四种授权模式,解决不同场景下的授权需求
[td]
授权模式
简介
授权码(Authorization Code)
OAuth2.0 标准授权步骤,Server 端向 Client 端下放 Code 码,Client 端再用 Code 码换取授权 Token
隐藏式(Implicit)
无法使用授权码模式时的备用选择,Server 端使用 URL 重定向方式直接将 Token 下放到 Client 端页面
密码式(Password)
Client直接拿着用户的账号密码换取授权 Token
客户端凭证(Client Credentials)
Server 端针对 Client 级别的 Token,代表应用自身的资源授权
使用 Sa-Token 的开源项目
  • [ Sa-Plus ]:一个基于 SpringBoot 架构的快速开发框架,内置代码生成器。
  • [ Snowy ]:国内首个国密前后分离快速开发平台,采用 Vue3 + AntDesignVue3 + Vite + SpringBoot + Mp + HuTool + SaToken。
  • [ RuoYi-Vue-Plus ]:重写RuoYi-Vue所有功能 集成 Sa-Token+Mybatis-Plus+Jackson+Xxl-Job+knife4j+Hutool+OSS 定期同步
  • [ RuoYi-Cloud-Plus ]:重写RuoYi-Cloud所有功能 整合 SpringCloudAlibaba Dubbo3.0 Sa-Token Mybatis-Plus MQ OSS ES Xxl-Job Docker 全方位升级 定期同步
  • [ EasyAdmin ]:一个基于SpringBoot2 + Sa-Token + Mybatis-Plus + Snakerflow + Layui 的后台管理系统,灵活多变可前后端分离,也可单体,内置代码生成器、权限管理、工作流引擎等
  • [ YC-Framework ]:致力于打造一款优秀的分布式微服务解决方案。
  • [ Pig-Satoken ]:重写 Pig 授权方式为 Sa-Token,其他代码不变。


友情链接
  • [ OkHttps ]:轻量级 http 通信框架,API无比优雅,支持 WebSocket、Stomp 协议
  • [ Bean Searcher ]:专注高级查询的只读 ORM,使一行代码实现复杂列表检索!
  • [ Snowy ]:小诺快速开发平台,同时拥有 Layui、Vue、SpringCloud 三个版本。
  • [ Jpom ]:简而轻的低侵入式在线构建、自动部署、日常运维、项目监控软件。
  • [ TLog ]:一个轻量级的分布式日志标记追踪神器。
  • [ hippo4j ]:强大的动态线程池框架,附带监控报警功能。



以下内容需要积分高于 2 才可浏览

链接:https://pan.baidu.com/s/1Y00WAVPCp_BqszLlfP3MZA




提取码下载:
文件名称:提取码下载.txt 
下载次数:0  文件大小:14 Bytes  售价:19金钱 [记录]
下载权限: 不限 [购买VIP]   [充值]   [在线充值]   【VIP会员5折;永久VIP免费】
安全检测,请放心下载






相关帖子

扫码关注微信公众号,及时获取最新资源信息!下载附件优惠VIP会员5折;永久VIP免费
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

免责声明:
1、本站提供的所有资源仅供参考学习使用,版权归原著所有,禁止下载本站资源参与商业和非法行为,请在24小时之内自行删除!
2、本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,请勿任何商业目的与商业用途。
3、若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。
4、论坛的所有内容都不保证其准确性,完整性,有效性,由于源码具有复制性,一经售出,概不退换。阅读本站内容因误导等因素而造成的损失本站不承担连带责任。
5、用户使用本网站必须遵守适用的法律法规,对于用户违法使用本站非法运营而引起的一切责任,由用户自行承担
6、本站所有资源来自互联网转载,版权归原著所有,用户访问和使用本站的条件是必须接受本站“免责声明”,如果不遵守,请勿访问或使用本网站
7、本站使用者因为违反本声明的规定而触犯中华人民共和国法律的,一切后果自己负责,本站不承担任何责任。
8、凡以任何方式登陆本网站或直接、间接使用本网站资料者,视为自愿接受本网站声明的约束。
9、本站以《2013 中华人民共和国计算机软件保护条例》第二章 “软件著作权” 第十七条为原则:为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。若有学员需要商用本站资源,请务必联系版权方购买正版授权!
10、本网站如无意中侵犯了某个企业或个人的知识产权,请来信【站长信箱312337667@qq.com】告之,本站将立即删除。
郑重声明:
本站所有资源仅供用户本地电脑学习源代码的内含设计思想和原理,禁止任何其他用途!
本站所有资源、教程来自互联网转载,仅供学习交流,不得商业运营资源,不确保资源完整性,图片和资源仅供参考,不提供任何技术服务。
本站资源仅供本地编辑研究学习参考,禁止未经资源商正版授权参与任何商业行为,违法行为!如需商业请购买各资源商正版授权
本站仅收集资源,提供用户自学研究使用,本站不存在私自接受协助用户架设游戏或资源,非法运营资源行为。
快速回复 返回顶部 返回列表