一、架构分析
目前绝大多数系统都已经采用 “前后端分离” 架构来设计了,传统的Session模式鉴权也不再适合这种架构(或者需要额外写很多的代码来专门适配)。
Sa-Token 是一个 java 轻量级权限认证框架,专为前后端分离架构打造,主要解决登录认证、权限认证、单点登录、OAuth2、微服务网关鉴权 等一系列权限相关问题。
Gitee 开源地址:https://gitee.com/dromara/sa-token
本文将介绍在 Springboot 架构下的前后端分离项目,如何使用 Sa-Token 方便的完成登录认证。
首先在项目中引入 Sa-Token 依赖:
<!-- Sa-Token 权限认证 -->
<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-spring-boot-starter</artifactId>
<version>1.34.0</version>
</dependency>
注:如果你使用的是 SpringBoot 3.x,只需要将 sa-token-spring-boot-starter 修改为 sa-token-spring-boot3-starter 即可。
二、无 Cookie 模式
无 Cookie 模式:特指不支持 Cookie 功能的终端,通俗来讲就是我们常说的 —— 前后端分离模式。
常规 Web 端鉴权方法,一般由 Cookie模式 完成,而 Cookie 有两个特性:
- 可由后端控制写入。
- 每次请求自动提交。
这就使得我们在前端代码中,无需任何特殊操作,就能完成鉴权的全部流程(因为整个流程都是后端控制完成的)
而在app、小程序等前后端分离场景中,一般是没有 Cookie 这一功能的,此时大多数人都会一脸懵逼,咋进行鉴权啊?
见招拆招,其实答案很简单:
- 不能后端控制写入了,就前端自己写入。(难点在后端如何将 Token 传递到前端)
- 每次请求不能自动提交了,那就手动提交。(难点在前端如何将 Token 传递到后端,同时后端将其读取出来)
三、后端将 token 返回到前端
- 首先调用
StpUtil.login(id)进行登录。 - 调用
StpUtil.getTokenInfo()返回当前会话的 token 详细参数。- 此方法返回一个对象,其有两个关键属性:
tokenName和tokenValue(token 的名称和 token 的值)。 - 将此对象传递到前台,让前端人员将这两个值保存到本地。
- 此方法返回一个对象,其有两个关键属性:
代码示例:
// 登录接口
@RequestMapping("doLogin")
public SaResult doLogin() {
// 第1步,先登录上
StpUtil.login(10001);
// 第2步,获取 Token 相关参数
SaTokenInfo tokenInfo = StpUtil.getTokenInfo();
// 第3步,返回给前端
return SaResult.data(tokenInfo);
}
四、前端将 token 提交到后端
- 无论是app还是小程序,其传递方式都大同小异。
- 那就是,将 token 塞到请求
header里 ,格式为:{tokenName: tokenValue}。 - 以经典跨端框架 uni-app 为例:
方式1,简单粗暴
// 1、首先在登录时,将 tokenValue 存储在本地,例如:
uni

文章介绍了Sa-Token,一个为前后端分离架构设计的Java轻量级权限认证框架,如何在Springboot项目中使用它进行登录认证。在无Cookie模式下,通过后端返回Token给前端,前端再将其放入请求头中,实现鉴权流程。此外,还提到了自定义Token前缀和风格以及生成策略的配置方法。

2054

被折叠的 条评论
为什么被折叠?



