mirror of
https://gitee.com/dromara/sa-token.git
synced 2025-09-19 10:08:07 +08:00
增加常见报错问答
This commit is contained in:
@@ -1,16 +1,16 @@
|
||||
# 前后台分离(无Cookie模式)
|
||||
# 前后端分离(无Cookie模式)
|
||||
---
|
||||
|
||||
### 何为无 Cookie 模式?
|
||||
|
||||
无 Cookie 模式:特指不支持 Cookie 功能的终端,通俗来讲就是我们常说的 —— **前后台分离模式**。
|
||||
无 Cookie 模式:特指不支持 Cookie 功能的终端,通俗来讲就是我们常说的 —— **前后端分离模式**。
|
||||
|
||||
常规 Web 端鉴权方法,一般由 `Cookie模式` 完成,而 Cookie 有两个特性:
|
||||
1. 可由后端控制写入。
|
||||
2. 每次请求自动提交。
|
||||
|
||||
这就使得我们在前端代码中,无需任何特殊操作,就能完成鉴权的全部流程(因为整个流程都是后端控制完成的)<br/>
|
||||
而在app、小程序等前后台分离场景中,一般是没有 Cookie 这一功能的,此时大多数人都会一脸懵逼,咋进行鉴权啊?
|
||||
而在app、小程序等前后端分离场景中,一般是没有 Cookie 这一功能的,此时大多数人都会一脸懵逼,咋进行鉴权啊?
|
||||
|
||||
见招拆招,其实答案很简单:
|
||||
- 不能后端控制写入了,就前端自己写入。(难点在**后端如何将 Token 传递到前端**)
|
||||
|
@@ -33,11 +33,11 @@ Cookie作为浏览器提供的默认会话跟踪机制,其生命周期有两
|
||||
<button class="show-img" img-src="https://oss.dev33.cn/sa-token/doc/g/g3--remember-me.gif">加载动态演示图</button>
|
||||
|
||||
|
||||
### 前后台分离模式下如何实现[记住我]?
|
||||
### 前后端分离模式下如何实现[记住我]?
|
||||
|
||||
此时机智的你😏很快发现一个问题,Cookie虽好,却无法在前后端分离环境下使用,那是不是代表上述方案在APP、小程序等环境中无效?
|
||||
|
||||
准确的讲,答案是肯定的,任何基于Cookie的认证方案在前后台分离环境下都会失效(原因在于这些客户端默认没有实现Cookie功能),不过好在,这些客户端一般都提供了替代方案,
|
||||
准确的讲,答案是肯定的,任何基于Cookie的认证方案在前后端分离环境下都会失效(原因在于这些客户端默认没有实现Cookie功能),不过好在,这些客户端一般都提供了替代方案,
|
||||
唯一遗憾的是,此场景中token的生命周期需要我们在前端手动控制:
|
||||
|
||||
以经典跨端框架 [uni-app](https://uniapp.dcloud.io/) 为例,我们可以使用如下方式达到同样的效果:
|
||||
@@ -49,7 +49,7 @@ uni.setStorageSync("satoken", "xxxx-xxxx-xxxx-xxxx-xxx");
|
||||
getApp().globalData.satoken = "xxxx-xxxx-xxxx-xxxx-xxx";
|
||||
```
|
||||
|
||||
如果你决定在PC浏览器环境下进行前后台分离模式开发,那么更加简单:
|
||||
如果你决定在PC浏览器环境下进行前后端分离模式开发,那么更加简单:
|
||||
``` js
|
||||
// 使用 localStorage 保存token,达到 [持久Cookie] 的效果
|
||||
localStorage.setItem("satoken", "xxxx-xxxx-xxxx-xxxx-xxx");
|
||||
|
Reference in New Issue
Block a user