1399 字
约 4 分钟
23
Sa-Token 入门:一个简单易用的 Java 权限认证框架

Sa-Token 入门:一个简单易用的 Java 权限认证框架

在企业项目开发中,登录认证和权限控制几乎是必不可少的功能。

以前我们经常使用 Spring Security 来完成用户认证、权限管理等功能,但是 Spring Security 功能非常强大,同时也带来了较高的学习成本:

  • 配置复杂
  • 概念较多
  • 自定义流程繁琐
  • 对新手不太友好

近年来,国内出现了一些更加轻量化的权限认证框架,其中 Sa-Token 使用体验非常不错。

本文简单介绍 Sa-Token 的核心功能,并带大家快速体验一下。


一、什么是 Sa-Token?

Sa-Token 是一个国产 Java 权限认证框架,主要解决:

  • 用户登录认证
  • 权限校验
  • 角色管理
  • 单点登录
  • Token 管理
  • Session 会话
  • 微服务鉴权

简单来说:

Sa-Token 就是帮助我们快速实现登录和权限控制的一套工具。

它的设计理念比较简单:

登录 → 生成 Token → 保存登录状态 → 请求时验证身份

开发者不需要关注大量底层细节。


二、Sa-Token 主要功能

Sa-Token 常用功能主要包括以下几个方面:

1. 登录认证

最基础的功能。

用户登录成功后:

StpUtil.login(userId);

Sa-Token 会自动生成 Token,并保存用户登录状态。

之后判断用户是否登录:

StpUtil.isLogin();

即可。

例如:

@GetMapping("/user/info")
public String info(){

    if(StpUtil.isLogin()){
        return "当前用户已登录";
    }

    return "请先登录";
}

2. 权限认证

比如后台管理系统:

管理员:

user:add
user:delete
user:update

普通用户:

user:view

可以通过 Sa-Token 判断:

StpUtil.checkPermission("user:add");

没有权限时,会自动抛出异常。


3. 角色认证

例如:

系统存在:

admin
vip
user

三个角色。

判断角色:

StpUtil.checkRole("admin");

只有管理员才能访问。


4. Token 管理

Sa-Token 内置 Token 管理能力:

例如:

  • 强制某个用户下线
  • 查询登录设备
  • 多端登录控制

比如:

StpUtil.logout(userId);

可以直接让用户退出登录。


5. 分布式支持

在单体项目中:

Token 可以存在 JVM 内存。

但是微服务环境:

用户服务
订单服务
商品服务
支付服务

多个服务需要共享登录状态。

Sa-Token 支持 Redis 存储:

用户登录
    |
    |
 Redis
    |
多个服务共享认证状态

满足分布式项目需求。


三、Spring Security 和 Sa-Token 对比

两者都可以实现认证授权,但是设计理念不同。

对比 Spring Security Sa-Token
定位 企业级安全框架 轻量权限认证框架
学习成本 较高 较低
配置复杂度 较复杂 简单
登录实现 需要配置认证流程 几行代码完成
权限控制 强大完善 简单易用
OAuth支持 原生支持较好 提供支持
微服务鉴权 支持 支持
国内项目使用 广泛 越来越多

Spring Security 登录流程

Spring Security 通常需要:

请求
 ↓
Filter过滤器链
 ↓
AuthenticationManager
 ↓
AuthenticationProvider
 ↓
UserDetailsService
 ↓
SecurityContext
 ↓
认证成功

流程非常完善,但是对于普通业务系统:

比如:

  • 用户登录
  • 权限判断
  • 管理后台

可能显得比较重。


Sa-Token 登录流程

Sa-Token 更简单:

用户登录
 ↓
StpUtil.login()
 ↓
生成Token
 ↓
保存状态
 ↓
请求验证Token

代码更加直观。


四、快速整合 Sa-Token

1. 添加依赖

Spring Boot 项目加入:

<dependency>
    <groupId>cn.dev33</groupId>
    <artifactId>sa-token-spring-boot3-starter</artifactId>
    <version>1.38.0</version>
</dependency>

2. 添加配置

application.yml:

sa-token:
  token-name: satoken
  timeout: 2592000
  is-log: true

含义:

  • token 名称:satoken
  • 有效期:30天
  • 开启日志

3. 登录接口

示例:

@RestController
public class LoginController {

    @GetMapping("/login")
    public String login(String username){

        // 模拟登录成功
        if("admin".equals(username)){

            StpUtil.login(10001);

            return "登录成功";
        }

        return "登录失败";
    }

    @GetMapping("/check")
    public String check(){

        return "是否登录:"
                + StpUtil.isLogin();
    }

}

访问:

/login?username=admin

登录成功。

再次访问:

/check

返回:

是否登录:true

五、什么时候选择 Sa-Token?

Sa-Token 比较适合:

✅ 中小型后台管理系统

例如:

  • 商城后台
  • 内容管理系统
  • SaaS系统
  • 企业内部系统

也适合:

✅ Spring Cloud 微服务项目

例如:

网关
 |
用户服务
 |
订单服务
 |
支付服务

统一使用 Token 鉴权。


六、总结

Spring Security 是一个功能非常全面的安全框架,更适合:

  • 大型企业系统
  • 高安全要求系统
  • 复杂认证场景

而 Sa-Token 最大特点:

简单、快速、国产化、上手成本低。

如果你的项目主要需求是:

用户登录
+
权限控制
+
角色管理
+
Token认证

那么 Sa-Token 是一个非常不错的选择。

后续可以继续学习:

  • Sa-Token + Redis
  • RBAC 权限模型
  • 注解权限控制
  • Spring Cloud 微服务鉴权

一步步搭建完整的权限认证体系。

Sa-Token 入门:一个简单易用的 Java 权限认证框架
https://clxhxhhr.top/posts/2927/
作者
clxstart
发布于
2026-09-20
许可协议
CC BY-NC-SA 4.0
评论
0 条
还没有评论,先写一条吧。