0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

一个轻量级的权限认证框架:Sa-Token

科技绿洲 来源:Java技术指北 作者:Java技术指北 2023-09-30 16:46 次阅读

Java有很多优秀的权限认证框架,如Apache ShiroSpring Security等,但是集成起来实在是有些复杂;今天给大家介绍一个轻量级的权限认证框架:Sa-Token,只需引入依赖即可使用,接下来让我们进一步了解它。

初识sa-token

Sa-Token 是一个轻量级 Java 权限认证框架,旨在以简单、优雅的方式完成系统的权限认证部分,主要解决: 登录认证权限认证单点登录OAuth2.0分布式Session会话微服务网关鉴权 等一系列权限相关问题。

图片
sa-token

Sa-Token 功能

Sa-Token 目前主要五大功能模块:登录认证、权限认证、单点登录、OAuth2.0、微服务鉴权。

  1. 登录认证 —— 单端登录、多端登录、同端互斥登录、七天内免登录
  2. 权限认证 —— 权限认证、角色认证、会话二级认证
  3. Session会话 —— 全端共享Session、单端独享Session、自定义Session
  4. 踢人下线 —— 根据账号id踢人下线、根据Token值踢人下线
  5. 账号封禁 —— 登录封禁、按照业务分类封禁、按照处罚阶梯封禁
  6. 持久层扩展 —— 可集成Redis、Memcached等专业缓存中间件,重启数据不丢失
  7. 分布式会话 —— 提供jwt集成、共享数据中心两种分布式会话方案
  8. 微服务网关鉴权 —— 适配Gateway、ShenYu、Zuul等常见网关的路由拦截认证
  9. 单点登录 —— 内置三种单点登录模式:无论是否跨域、是否共享Redis,都可以搞定
  10. OAuth2.0认证 —— 轻松搭建 OAuth2.0 服务,支持openid模式
  11. 二级认证 —— 在已登录的基础上再次认证,保证安全性
  12. Basic认证 —— 一行代码接入 Http Basic 认证
  13. 独立Redis —— 将权限缓存与业务缓存分离
  14. 临时Token认证 —— 解决短时间的Token授权问题
  15. 模拟他人账号 —— 实时操作任意用户状态数据
  16. 临时身份切换 —— 将会话身份临时切换为其它账号
  17. 前后端分离 —— APP、小程序等不支持Cookie的终端
  18. 同端互斥登录 —— 像QQ一样手机电脑同时在线,但是两个手机上互斥登录
  19. 多账号认证体系 —— 比如一个商城项目的user表和admin表分开鉴权
  20. Token风格定制 —— 内置六种Token风格,还可:自定义Token生成策略、自定义Token前缀
  21. 注解式鉴权 —— 优雅的将鉴权与业务代码分离
  22. 路由拦截式鉴权 —— 根据路由拦截鉴权,可适配restful模式
  23. 自动续签 —— 提供两种Token过期策略,灵活搭配使用,还可自动续签
  24. 会话治理 —— 提供方便灵活的会话查询接口
  25. 记住我模式 —— 适配[记住我]模式,重启浏览器免验证
  26. 密码加密 —— 提供密码加密模块,可快速MD5、SHA1、SHA256、AES、RSA加密
  27. 全局侦听器 —— 在用户登陆、注销、被踢下线等关键性操作时进行一些AOP操作
  28. 开箱即用 —— 提供SpringMVC、WebFlux等常见web框架starter集成包,真正的开箱即用

简单示例

1、引入依赖

注:如果你使用的是 SpringBoot 3.x,只需要将 sa-token-spring-boot-starter 修改为 sa-token-spring-boot3-starter 即可。

< !-- Sa-Token 权限认证,1.34.0 已是最新版本 -- >
< dependency >
    < groupId >cn.dev33< /groupId >
    < artifactId >sa-token-spring-boot-starter< /artifactId >
    < version >1.34.0< /version >
< /dependency >

yaml配置

server:
    # 端口
    port: 8081
    

sa-token: 
    # token名称 (同时也是cookie名称)
    token-name: satoken
    
# 用 sa-token 默认的配置即可,也可根据业务自行修改

2、编写测试代码

@RestController
@RequestMapping("/user/")
public class UserController {

    @RequestMapping("doLogin")
    public String doLogin(String username, String password) {
        if("zhang".equals(username) && "123456".equals(password)) {
            StpUtil.login(10001);
            return "登录成功";
        }
        return "登录失败";
    }

    @RequestMapping("isLogin")
    public String isLogin() {
        return "当前会话是否登录:" + StpUtil.isLogin();
    }
    
}

3、测试

启动代码,从浏览器依次访问上述测试接口

图片

图片

小结

看得出来,比起Shiro、SpringSecurity这些被广泛使用的鉴权项目,这个项目的集成使用方式可以简单到令人发指。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 模块
    +关注

    关注

    7

    文章

    2484

    浏览量

    46531
  • 接口
    +关注

    关注

    33

    文章

    7640

    浏览量

    148496
  • 框架
    +关注

    关注

    0

    文章

    297

    浏览量

    17045
  • 数据中心
    +关注

    关注

    15

    文章

    4187

    浏览量

    70065
收藏 人收藏

    评论

    相关推荐

    一个面向嵌入式系统的轻量级框架

    mr-library 是一个面向嵌入式系统的轻量级框架,提供统一的底层驱动设备模型以及基础服务功能,具有模块化设计、可配置性和扩展性的特点, 可帮助开发者快速构建嵌入式应用程序。
    发表于 09-01 12:22 307次阅读

    创建51轻量级操作系统

    创建51轻量级操作系统
    发表于 09-29 09:58

    10轻量级框架

    这些轻量级框架使用HTML5和CSS3标准来帮助您快速开发跨平台的Web移动应用和网站。
    发表于 07-17 08:25

    轻量级深度学习网络是什么

    轻量级深度学习网络概览
    发表于 04-23 14:53

    轻量级的ui框架如何去制作

    原创分享:自制轻量级单片机UI框架框架元素用户接口代码开源平时常看csdn,但是从来没有自己写过。正好这几天需要用单片机做一个简易的ui界面,于是自己写了
    发表于 07-14 07:39

    Dllite_micro (轻量级的 AI 推理框架

    DLLite-Micro 是轻量级的 AI 推理框架,可以为 OpenHarmony OS 的轻量设备和小型设备提供深度模型的推理能力DLLite-Micro 向开发者提供清晰、易
    发表于 08-05 11:40

    如何自制轻量级单片机UI框架

    如何自制轻量级单片机UI框架
    发表于 10-14 06:13

    种超轻量级的flashKV数据存储方案分享

    tinyFlash种超轻量级的flash KV数据存储方案Github 地址:https://github.com/ospanic/tinyFlash设计原理本方案采用两扇区轮流使用的方法存储
    发表于 12-20 06:08

    基于动态AOP 和WebServices 的轻量级RBAC

    针对传统基于角色的访问控制系统在面向中小企业应用中的不足,设计了一个面向中小企业的基于WebServices 的轻量级RBAC 系统。利用动态AOP 技术将权限验证实现为方面,通过对WebS
    发表于 06-18 11:00 16次下载

    基于同步数的轻量级高效RFID身份认证协议

    数的轻量级高效RFID身份认证协议。协议运用同步数以及双向认证机制保障系统安全性。对各种威胁进行分析,确保了协议的安全性。通过比较其他协议的效率与成本,可以看出该协议具有轻量级与高效性
    发表于 12-01 14:19 1次下载
    基于同步数的<b class='flag-5'>轻量级</b>高效RFID身份<b class='flag-5'>认证</b>协议

    基于共识算法的轻量级轮转CA认证方案

    自组织网络难以进行复杂的认证。针对该问题,结合轻量级证书颁发机构(CA)认证思想,借鉴区块链技术中的共识机制来选举CA,提出一种基于共识算法的轻量级轮转CA
    发表于 06-01 15:41 4次下载

    原创分享:自制轻量级单片机UI框架

    原创分享:自制轻量级单片机UI框架框架元素用户接口代码开源平时常看csdn,但是从来没有自己写过。正好这几天需要用单片机做一个简易的ui界面,于是自己写了一个轻量级的ui
    发表于 11-05 15:20 29次下载
    原创分享:自制<b class='flag-5'>轻量级</b>单片机UI<b class='flag-5'>框架</b>

    测评分享 | 如何在先楫HPM6750上运行轻量级AI推理框架TinyMaix

    本期内容由先楫开发者社区大咖@xusiwei1236分享基于先楫HPM6750的轻量级AI推理框架,赶紧来瞧瞧~一、TinyMaix是什么?TinyMaix是国内sipeed团队开发一个轻量级AI
    的头像 发表于 12-12 17:57 986次阅读
    测评分享 | 如何在先楫HPM6750上运行<b class='flag-5'>轻量级</b>AI推理<b class='flag-5'>框架</b>TinyMaix

    基于Python 轻量级ORM框架

    ORM框架使用最广泛的就是SQLAlchemy和Django自带的ORM框架,但是SQLAlchemy的语法显然相对Django的ORM框架麻烦一点。 而Django本身是一个web框架
    的头像 发表于 11-01 11:17 344次阅读
    基于Python <b class='flag-5'>轻量级</b>ORM<b class='flag-5'>框架</b>

    深度详解嵌入式系统专用轻量级框架设计

    MR 框架是专为嵌入式系统设计的轻量级框架。充分考虑了嵌入式系统在资源和性能方面的需求。通过提供标准化的设备管理接口,极大简化了嵌入式应用开发的难度,帮助开发者快速构建嵌入式应用程序。
    发表于 04-27 02:32 17次阅读
    深度详解嵌入式系统专用<b class='flag-5'>轻量级</b><b class='flag-5'>框架</b>设计