Sa-Token - 功能最全的 Java 权限认证框架


Sa-Token - 功能最全的 Java 权限认证框架

文章插图

身份认证和权限鉴别,是大多数系统都需要实现的逻辑 。从最简单的小型网站的用户登录,到极为庞大复杂的企业级用户权限控制,权限认证可以只是简单的判断查询,也可以是多种权限模型和身份验证方式的复杂混合 。
对于 JAVA 生态而言,权限认证早已是老生常谈,如 Shiro、Security 等的传统框架已是必经之路 。然而,有没有更为简洁、能写更少代码和配置、更为符合实际业务需求的框架呢?Sa-Token 或许是一个更好的选择 。
 
简介Sa-Token,是 click33 在 Github 上开源的轻量级 Java 权限认证框架,目前版本为 v1.15.2 。
Sa-Token 框架,主要解决的是:登录认证、权限认证、Session会话、单点登录、OAuth2.0 等一系列权限相关问题 。框架针对:踢人下线、自动续签、前后台分离、分布式会话等常见业务进行了适配,使开发者可以以一种极简的方式实现系统的权限认证逻辑 。
与其他 Java 权限认证框架相比,sa-token 具有以下优势:
  • 简单 :可零配置启动框架,真正的开箱即用,低成本上手
  • 强大:目前已集成几十项权限相关特性,涵盖了大部分业务场景的解决方案
  • 易用:如丝般顺滑的 API 调用,大量高级特性统统只需一行代码即可实现
  • 高扩展:几乎所有组件都提供了扩展接口,90% 以上的逻辑都可以按需重写
 
使用要在项目中使用 Sa-Token,可以通过 Maven 引入,在 pom.xml 中加入依赖:
<dependency><groupId>cn.dev33</groupId><artifactId>sa-token-spring-boot-starter</artifactId><version>1.15.0.RELEASE</version></dependency>也可以通过 Gradle 引入:
implementation 'cn.dev33:sa-token-spring-boot-starter:1.15.0.RELEASE' 
Sa-Token 功能强大,覆盖全面,包括:
  • 登录验证 —— 轻松登录鉴权,并提供五种细分场景值
  • 权限验证 —— 适配RBAC权限模型,不同角色不同授权
  • Session会话 —— 专业的数据缓存中心
  • 踢人下线 —— 将违规用户立刻清退下线
  • 持久层扩展 —— 可集成redis、Memcached等专业缓存中间件,重启数据不丢失
  • 分布式会话 —— 提供jwt集成和共享数据中心两种分布式会话方案
  • 单点登录 —— 一处登录,处处通行
  • 模拟他人账号 —— 实时操作任意用户状态数据
  • 临时身份切换 —— 将会话身份临时切换为其它账号
  • 无Cookie模式 —— App、小程序等前后台分离场景
  • 同端互斥登录 —— 像QQ一样手机电脑同时在线,但是两个手机上互斥登录
  • 多账号认证体系 —— 比如一个商城项目的user表和admin表分开鉴权
  • 花式token生成 —— 内置六种token风格,还可自定义token生成策略
  • 注解式鉴权 —— 优雅的将鉴权与业务代码分离
  • 路由拦截式鉴权 —— 根据路由拦截鉴权,可适配restful模式
  • 自动续签 —— 提供两种token过期策略,灵活搭配使用,还可自动续签
  • 会话治理 —— 提供方便灵活的会话查询接口
  • 记住我模式 —— 适配[记住我]模式,重启浏览器免验证
  • 密码加密 —— 提供密码加密模块,可快速MD5、SHA1、SHA256、AES、RSA加密
  • 组件自动注入 —— 零配置与Spring等框架集成
Sa-Token 接口简洁,使用方便 。如果我们想要实现登录和注销,sa-token 提供了以下方式:
// 标记当前会话登录的账号id // 建议的参数类型:long | int | String, 不可以传入复杂类型,如:User、Admin等等StpUtil.setLoginId(Object loginId);// 当前会话注销登录StpUtil.logout();// 获取当前会话是否已经登录,返回true=已登录,false=未登录StpUtil.isLogin();// 检验当前会话是否已经登录, 如果未登录,则抛出异常:`NotLoginException`StpUtil.checkLogin() 
Sa-Token 还提供了可扩展性极强的权限验证实现 。Sa-Token 把【获取当前账号权限码集合】的操作以接口方式暴露,开发者只需实现 StpInterface 接口:


推荐阅读