Sa-Token 项目介绍

Sa-Token 项目介绍

【免费下载链接】Sa-Token 一个轻量级 java 权限认证框架,让鉴权变得简单、优雅! —— 登录认证、权限认证、分布式Session会话、微服务网关鉴权、SSO 单点登录、OAuth2.0 统一认证 【免费下载链接】Sa-Token 项目地址: https://gitcode.com/dromara/sa-token

Sa-Token 是一个轻量级 Java 权限认证框架,专注于解决登录认证、权限认证、单点登录、OAuth2.0 和微服务鉴权等核心问题。它通过简洁的 API 设计和丰富的功能模块,帮助开发者快速构建安全、高效的权限管理系统。

Sa-Token 是什么

Sa-Token 是一个轻量级 Java 权限认证框架,专注于解决登录认证、权限认证、单点登录、OAuth2.0 和微服务鉴权等核心问题。它通过简洁的 API 设计和丰富的功能模块,帮助开发者快速构建安全、高效的权限管理系统。以下将从多个维度详细介绍 Sa-Token 的核心特性和设计理念。

核心特性

  1. 登录认证
    Sa-Token 提供了灵活的登录认证机制,支持单端登录、多端登录、同端互斥登录等功能。通过一行代码即可完成会话登录:

    StpUtil.login(10001); // 登录账号id为10001的用户
    
  2. 权限认证
    支持基于角色和权限的细粒度控制,可通过注解或路由拦截实现权限校验:

    @SaCheckPermission("user:add") // 只有具备user:add权限的用户才能访问此方法
    public String addUser() {
        return "用户添加成功";
    }
    
  3. 单点登录 (SSO)
    Sa-Token 提供了三种 SSO 模式,适应不同架构需求:

    • 模式一:同域 + 同 Redis,共享 Cookie 同步会话。
    • 模式二:不同域 + 同 Redis,通过 URL 重定向传播会话。
    • 模式三:不同域 + 不同 Redis,通过 HTTP 请求获取会话。
  4. OAuth2.0 支持
    支持授权码、隐藏式、密码式和客户端凭证四种授权模式,满足多样化的授权需求。

  5. 微服务鉴权
    适配 Gateway、ShenYu、Zuul 等常见网关,提供分布式会话和 RPC 调用鉴权能力。

设计理念

  1. 简洁易用
    Sa-Token 的 API 设计遵循“一行代码解决问题”的原则,例如踢人下线:

    StpUtil.kickout(10077); // 将账号id为10077的用户踢下线
    
  2. 高性能
    通过灵活的持久层扩展(如 Redis 集成)和高效的算法设计,确保框架在高并发场景下的性能表现。

  3. 模块化设计
    核心功能模块化,开发者可按需引入,避免冗余依赖。例如:

    • sa-token-core:核心模块。
    • sa-token-spring-boot-starter:Spring Boot 集成模块。
    • sa-token-jwt:JWT 支持模块。
  4. 多框架适配
    不仅支持 Spring Boot,还适配 Solon、JFinal 等框架,真正做到开箱即用。

核心类解析

  1. StpUtil
    工具类,封装了登录、注销、权限校验等常用操作。例如:

    StpUtil.checkLogin(); // 校验当前会话是否登录
    
  2. SaTokenConfig
    配置类,用于全局设置 Token 名称、过期时间、是否并发登录等参数。例如:

    @Bean
    public SaTokenConfig saTokenConfig() {
        SaTokenConfig config = new SaTokenConfig();
        config.setTokenName("satoken");
        config.setTimeout(86400); // Token有效期24小时
        return config;
    }
    
  3. StpInterface
    接口类,开发者需实现其方法以自定义权限数据加载逻辑。例如:

    @Component
    public class StpInterfaceImpl implements StpInterface {
        @Override
        public List<String> getPermissionList(Object loginId, String loginType) {
            return Arrays.asList("user:add", "user:delete");
        }
    }
    

技术对比

特性Sa-TokenShiroSpring Security
学习曲线
功能丰富度
性能
多框架适配支持有限仅Spring
社区活跃度

适用场景

  • 快速开发:适合需要快速集成权限管理的项目。
  • 微服务架构:提供分布式会话和鉴权支持。
  • 多端登录:支持APP、Web、小程序等多端同时在线。

通过以上介绍,可以看出 Sa-Token 是一个功能强大、设计优雅的权限认证框架,能够显著提升开发效率并降低系统复杂度。

核心功能模块

Sa-Token 是一个轻量级 Java 权限认证框架,其核心功能模块设计简洁高效,覆盖了登录认证、权限认证、单点登录、OAuth2.0 和微服务鉴权等多个场景。以下是对其核心功能模块的详细解析:


1. 登录认证

Sa-Token 提供了灵活的登录认证功能,支持单端登录、多端登录、同端互斥登录等场景。核心类 StpUtilStpLogic 封装了登录认证的核心逻辑。

核心功能点:
  • 会话登录:通过 StpUtil.login(Object id) 实现用户登录。
  • 会话注销:通过 StpUtil.logout() 实现用户注销。
  • 会话检查:通过 StpUtil.checkLogin() 检查用户是否登录。
  • 记住我模式:支持配置会话的持久化,实现免登录功能。
// 示例代码:登录与注销
StpUtil.login(10001); // 用户登录
StpUtil.logout();     // 用户注销
流程图:

mermaid


2. 权限认证

Sa-Token 支持基于角色和权限的细粒度访问控制,通过注解和路由拦截两种方式实现权限校验。

核心功能点:
  • 注解鉴权:使用 @SaCheckPermission@SaCheckRole 注解实现方法级别的权限控制。
  • 路由拦截:通过 SaRouter.match() 实现基于路径的权限拦截。
// 示例代码:注解鉴权
@SaCheckPermission("user:add")
public String addUser(User user) {
    return "用户添加成功";
}

// 示例代码:路由拦截
registry.addInterceptor(new SaInterceptor(handler -> {
    SaRouter.match("/admin/**").check(r -> StpUtil.checkPermission("admin"));
}));
类图:

mermaid


3. 单点登录(SSO)

Sa-Token 提供了三种单点登录模式,支持同域、跨域、同 Redis 和跨 Redis 等多种场景。

核心功能点:
  • 模式一:共享 Cookie 同步会话。
  • 模式二:URL 重定向传播会话。
  • 模式三:HTTP 请求获取会话。
// 示例代码:SSO 登录
StpUtil.login(10001, "sso");
状态图:

mermaid


4. OAuth2.0 认证

Sa-Token 支持 OAuth2.0 的四种授权模式,包括授权码模式、隐藏式模式、密码模式和客户端凭证模式。

核心功能点:
  • 授权码模式:适用于第三方应用授权。
  • 密码模式:适用于信任的内部应用。
  • 客户端凭证模式:适用于服务端间通信。
// 示例代码:OAuth2.0 授权码模式
StpUtil.createToken(10001, "oauth2");
表格对比:
授权模式适用场景
授权码模式第三方应用授权
隐藏式模式前端无后端支持
密码模式信任的内部应用
客户端凭证模式服务端间通信

5. 微服务鉴权

Sa-Token 提供了微服务网关鉴权和 RPC 调用鉴权功能,确保服务调用的安全性。

核心功能点:
  • 网关鉴权:适配 Gateway、ShenYu 等常见网关。
  • RPC 鉴权:支持 Dubbo、gRPC 等框架的鉴权。
// 示例代码:RPC 调用鉴权
StpUtil.checkPermission("rpc:call");
序列图:

mermaid


通过以上核心功能模块的设计,Sa-Token 能够满足大多数 Java 项目的权限认证需求,同时保持代码的简洁性和易用性。

适用场景

Sa-Token 是一个轻量级 Java 权限认证框架,适用于多种场景下的权限管理和认证需求。以下是一些典型的适用场景:

1. 单点登录(SSO)系统

Sa-Token 提供了三种单点登录模式,适用于不同架构的 SSO 需求:

  • 同域 SSO:适用于多个子系统部署在同一主域名下的场景。
  • 跨域 SSO:适用于子系统部署在不同域名下的场景,支持 URL 重定向传播会话。
  • 前后端分离 SSO:适用于前后端分离架构,支持通过 HTTP 请求获取会话。

mermaid

2. 微服务鉴权

Sa-Token 支持微服务架构下的鉴权需求,适配 Gateway、ShenYu、Zuul 等常见网关的路由拦截认证。同时,提供 RPC 调用鉴权功能,确保服务调用的安全性。

mermaid

3. 多端登录与互斥登录

Sa-Token 支持多端登录(如手机、电脑同时在线),同时支持同端互斥登录(如两个手机不能同时登录同一账号)。

mermaid

4. 注解式权限控制

通过 @SaCheckLogin@SaCheckRole@SaCheckPermission 等注解,可以轻松实现方法级别的权限控制。

@SaCheckLogin
public String getUserInfo() {
    // 必须登录才能访问
}

@SaCheckPermission("user:add")
public String addUser() {
    // 必须具有 user:add 权限才能访问
}

5. 会话管理与持久化

Sa-Token 提供了灵活的会话管理功能,支持全端共享 Session、单端独享 Session 等模式,并可集成 Redis 实现持久化。

mermaid

6. 临时 Token 认证

适用于短时间的 Token 授权需求,如验证码、临时访问链接等。

String tempToken = SaTempUtil.createToken("临时数据", 300); // 有效期 5 分钟

7. 多账号体系认证

支持一个系统中多套账号分开鉴权,例如商城的用户表和管理员表。

// 用户登录
StpUserUtil.login(10001);
// 管理员登录
StpAdminUtil.login(20001);

8. 安全防护

Sa-Token 内置防火墙功能,支持路径危险字符检测、参数校验等,有效防止常见的安全攻击。

mermaid

9. 前后端分离架构

Sa-Token 支持前后端分离架构,适用于 APP、小程序等不支持 Cookie 的终端。

// 前端通过 Header 传递 Token
StpUtil.checkLogin();

10. OAuth2.0 认证

Sa-Token 提供 OAuth2.0 模块,支持授权码、隐藏式、密码式和客户端凭证四种授权模式。

mermaid

总结

Sa-Token 的设计目标是简单、灵活、高效,适用于从单体应用到微服务架构的各种权限认证需求。无论是传统的 Web 应用,还是现代化的前后端分离项目,Sa-Token 都能提供强大的支持。

项目优势

Sa-Token 是一个轻量级 Java 权限认证框架,旨在以简单、优雅的方式解决系统的权限认证问题。以下是 Sa-Token 的核心优势:

1. 简单易用

Sa-Token 的 API 设计简洁直观,大多数功能可以通过一行代码实现。例如,登录认证仅需调用 StpUtil.login(10001),权限校验仅需 StpUtil.checkPermission("user:add")。开发者无需实现复杂接口或繁琐配置,即可快速集成到项目中。

// 登录认证
StpUtil.login(10001);

// 权限校验
@SaCheckPermission("user:add")
public String addUser(User user) {
    return "用户添加成功";
}

2. 功能全面

Sa-Token 提供了丰富的功能模块,覆盖了权限认证的常见需求:

  • 登录认证:支持单端登录、多端登录、同端互斥登录等场景。
  • 权限认证:支持角色、权限、会话二级认证等。
  • 单点登录 (SSO):内置三种模式,适配同域、跨域、前后端分离等架构。
  • OAuth2.0:支持授权码、隐藏式、密码式等多种授权模式。
  • 微服务鉴权:适配 Gateway、ShenYu、Zuul 等常见网关。

3. 高性能与轻量级

Sa-Token 的核心代码精简高效,无冗余依赖,启动速度快,内存占用低。支持 Redis 持久化,确保高并发场景下的性能稳定。

mermaid

4. 灵活的扩展性

Sa-Token 提供了多种扩展点,开发者可以自定义 Token 生成策略、会话存储方式、权限校验逻辑等。例如,通过实现 StpInterface 接口,可以自定义权限数据源。

public class CustomStpInterface implements StpInterface {
    @Override
    public List<String> getPermissionList(Object loginId, String loginType) {
        // 自定义权限逻辑
        return Arrays.asList("user:add", "user:delete");
    }
}

5. 强大的社区支持

Sa-Token 拥有活跃的开源社区,文档详尽,示例丰富,问题响应迅速。以下是社区生态的部分亮点:

功能支持情况
文档提供中文和英文文档
示例项目提供多种场景的 Demo 项目
插件生态支持 JWT、Redis、SSO 等插件
社区交流QQ 群、微信群、GitHub Issues

6. 跨框架适配

Sa-Token 不仅支持 Spring Boot,还适配了 Solon、JFinal、WebFlux 等常见框架,真正做到开箱即用。

mermaid

7. 安全可靠

Sa-Token 内置了多种安全机制,包括 Token 防篡改、请求防重放、会话防劫持等,确保系统安全无虞。

// 启用二级认证
StpUtil.openSafe(3600);

// 校验二级认证
StpUtil.checkSafe();

8. 前后端分离友好

Sa-Token 支持 Cookie、Header、URL 等多种 Token 传递方式,完美适配前后端分离架构。

// 从 Header 中获取 Token
String token = request.getHeader("satoken");

通过以上优势,Sa-Token 能够帮助开发者快速构建安全、高效的权限认证系统,大幅提升开发效率。

总结

Sa-Token 是一个功能强大、设计优雅的权限认证框架,能够显著提升开发效率并降低系统复杂度。无论是传统的 Web 应用,还是现代化的前后端分离项目,Sa-Token 都能提供强大的支持。

【免费下载链接】Sa-Token 一个轻量级 java 权限认证框架,让鉴权变得简单、优雅! —— 登录认证、权限认证、分布式Session会话、微服务网关鉴权、SSO 单点登录、OAuth2.0 统一认证 【免费下载链接】Sa-Token 项目地址: https://gitcode.com/dromara/sa-token

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值