首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >一行代码搞定认证

一行代码搞定认证

作者头像
程序员NEO
发布2026-04-29 19:29:32
发布2026-04-29 19:29:32
1390
举报

Sa-Token 是一个轻量级Java 权限认证框架,主要解决:登录认证权限认证单点登录OAuth2.0分布式Session会话微服务网关鉴权 等一系列权限相关问题

Sa-Token 旨在以简单优雅的方式完成系统的权限认证部分,以登录认证为例,你只需要:

一行代码,完成登录认证

代码语言:javascript
复制
// 会话登录,参数填登录人的账号id 
StpUtil.login(10001);

无需实现任何接口,无需创建任何配置文件,只需要这一句静态代码的调用,便可以完成会话登录认证。

如果一个接口需要登录后才能访问,我们只需调用以下代码:

一行代码,完成登录校验

代码语言:javascript
复制
// 校验当前客户端是否已经登录,如果未登录则抛出 `NotLoginException` 异常
StpUtil.checkLogin();

在 Sa-Token 中,大多数功能都可以一行代码解决:

一行代码,踢人下线

代码语言:javascript
复制
// 将账号id为 10077 的会话踢下线 
StpUtil.kickout(10077);

权限认证

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

路由拦截鉴权

注册路由拦截器,根据不同路由模块进行鉴权:

代码语言:javascript
复制
// 根据路由划分模块,不同模块不同鉴权 
registry.addInterceptor(new SaInterceptor(handler -> {
    // 访问/user/** 模块需要具备 user 权限
    SaRouter.match("/user/**", r -> StpUtil.checkPermission("user"));
    // 访问/admin/** 模块需要具备 admin 权限
    SaRouter.match("/admin/**", r -> StpUtil.checkPermission("admin"));
    // 访问/goods/** 模块需要具备 goods 权限
    SaRouter.match("/goods/**", r -> StpUtil.checkPermission("goods"));
    // 访问/orders/** 模块需要具备 orders 权限
    SaRouter.match("/orders/**", r -> StpUtil.checkPermission("orders"));
    // 访问/notice/** 模块需要具备 notice 权限
    SaRouter.match("/notice/**", r -> StpUtil.checkPermission("notice"));
    // 更多模块... 
})).addPathPatterns("/**");

当你受够 Shiro、SpringSecurity 等框架的复杂配置和繁琐使用时,不妨试试 Sa-Token,或许它能给你带来不一样的体验。

亲身体验之后,你就会明白,相对于这些传统老牌框架,Sa-Token 的 API 设计是多么的简单、优雅!

最后,Sa-Token 的官网文档地址是:https://sa-token.cc/doc.html#/ ,感兴趣的朋友可以去看看。

附上 Sa-Token 的功能一览表:

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

登录与会话管理

功能模块

功能点

说明

登录认证

单端登录

同一账号同一时间只允许一个终端在线

多端登录

同一账号支持多个终端同时在线

同端互斥登录

同类型终端互斥(如两个手机不能同时在线)

七天内免登录

支持长期保持登录状态

Session 会话

全端共享 Session

多终端共享会话数据

单端独享 Session

每个终端拥有独立 Session

自定义 Session

支持自定义 Session 类型

会话存取值

提供便捷的 set / get 操作

分布式会话

分布式 Session

提供共享数据中心方案

持久层扩展

Redis 集成

服务重启后数据不丢失

独立 Redis

权限缓存与业务缓存隔离

权限与鉴权体系

功能模块

功能点

说明

权限认证

权限认证

基于权限码的访问控制

角色认证

基于角色的访问控制

会话二级认证

登录后再次认证

注解式鉴权

注解鉴权

通过注解将鉴权与业务解耦

路由拦截鉴权

路由鉴权

支持 RESTful 风格

微服务鉴权

网关鉴权

适配 Gateway、Zuul、ShenYu

RPC 鉴权

防止服务间裸调用

临时 Token

临时授权

解决短时间 Token 授权问题

参数签名

接口签名

防参数篡改、防请求重放

功能结构图:

如果这篇文章帮到了你,不妨点个分享给同样需要的朋友吧! 你的每一次支持,都是我持续创作的动力!💪

往期推荐:

序号

文章标题

链接

1

MCP协议爆火揭秘

查看详情

2

轻松配置Cursor玩转MCP

查看详情

3

Browser-Tool 前端开发神器

查看详情

4

AI编码焕新:用Context7

查看详情

5

NotebookLM:靠谱知识库

查看详情

6

Spring AI 玩转多轮对话

查看详情

7

Cursor生成UI,加一步封神

查看详情

8

神器!免费替代Postman

查看详情

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-12-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员NEO 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一行代码,完成登录认证
  • 一行代码,完成登录校验
  • 一行代码,踢人下线
  • 权限认证
  • 路由拦截鉴权
  • 登录与会话管理
  • 权限与鉴权体系
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档