增加常见报错问答

This commit is contained in:
click33
2023-03-26 11:30:17 +08:00
parent f017af7dfd
commit 0bae216474
14 changed files with 193 additions and 60 deletions

View File

@@ -1,16 +1,16 @@
# 前后分离无Cookie模式
# 前后分离无Cookie模式
---
### 何为无 Cookie 模式?
无 Cookie 模式:特指不支持 Cookie 功能的终端,通俗来讲就是我们常说的 —— **前后分离模式**
无 Cookie 模式:特指不支持 Cookie 功能的终端,通俗来讲就是我们常说的 —— **前后分离模式**
常规 Web 端鉴权方法,一般由 `Cookie模式` 完成,而 Cookie 有两个特性:
1. 可由后端控制写入。
2. 每次请求自动提交。
这就使得我们在前端代码中,无需任何特殊操作,就能完成鉴权的全部流程(因为整个流程都是后端控制完成的)<br/>
而在app、小程序等前后分离场景中,一般是没有 Cookie 这一功能的,此时大多数人都会一脸懵逼,咋进行鉴权啊?
而在app、小程序等前后分离场景中,一般是没有 Cookie 这一功能的,此时大多数人都会一脸懵逼,咋进行鉴权啊?
见招拆招,其实答案很简单:
- 不能后端控制写入了,就前端自己写入。(难点在**后端如何将 Token 传递到前端**

View File

@@ -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");