From 8aa1852870eff94f28db76cc44d8b09e836492ee Mon Sep 17 00:00:00 2001
From: RockMan <985449475@qq.com>
Date: Sat, 6 Feb 2021 14:31:41 +0800
Subject: [PATCH] update sa-token-doc/doc/use/not-cookie.md.
---
sa-token-doc/doc/use/not-cookie.md | 41 +++++++++++++++++-------------
1 file changed, 24 insertions(+), 17 deletions(-)
diff --git a/sa-token-doc/doc/use/not-cookie.md b/sa-token-doc/doc/use/not-cookie.md
index 25c3401a..a0579609 100644
--- a/sa-token-doc/doc/use/not-cookie.md
+++ b/sa-token-doc/doc/use/not-cookie.md
@@ -1,28 +1,34 @@
-# 无cookie模式
+# 无Cookie模式
---
-### 何为无cookie?
+### 何为无Cookie模式?
-- 常规PC端鉴权方法,一般由`cookie`进行
-- 而`cookie`有两个特性:1、可由后端控制写入,2、每次请求自动提交
-- 这就使得大多数web前端码农,无需任何特殊操作,就能完成鉴权的流程(因为整个流程都是后端控制完成的)
-- 而在app、小程序等前后台分离场景中,是没有`cookie`这一功能的,此时大多数人都会一脸懵逼,咋进行鉴权啊
-- 其实很简单
- - 不能后端控制写入了,就前端自己写入(难点在**如何将token传递到前端**)
- - 每次请求不能自动提交了,那就手动提交(难点在前端如何**将token传递到后端**,同时后端**将其读取出来**)
+无Cookie:特指不支持Cookie功能的终端,通俗来讲就是我们常说的 —— **前后台分离模式**
+
+常规PC端鉴权方法,一般由`Cookie模式`完成,而`Cookie`有两个特性:
+1. 可由后端控制写入
+2. 每次请求自动提交
+
+这就使得我们在前端代码中,无需任何特殊操作,就能完成鉴权的全部流程(因为整个流程都是后端控制完成的)
+而在app、小程序等前后台分离场景中,一般是没有`Cookie`这一功能的,此时大多数人都会一脸懵逼,咋进行鉴权啊?
+
+见招拆招,其实答案很简单:
+- 不能后端控制写入了,就前端自己写入(难点在**后端如何将token传递到前端**)
+- 每次请求不能自动提交了,那就手动提交(难点在**前端如何将token传递到后端**,同时**后端将其读取出来**)
-### 将token传递到前端
+
+### 1、后端将 token 返回到前端
1. 首先调用 `StpUtil.setLoginId(Object loginId)` 进行登录
-2. 调用 `StpUtil.getTokenInfo()` 返回当前会话的token值
+2. 调用 `StpUtil.getTokenInfo()` 返回当前会话的token详细参数
- 此方法返回一个对象,其有两个关键属性:`tokenName`和`tokenValue`(`token`的名称和`token`的值)
- 将此对象传递到前台,让前端人员将这两个值保存到本地
-### 前端将token提交到后端
+### 2、前端将 token 提交到后端
1. 无论是app还是小程序,其传递方式都大同小异
2. 那就是,将`token`塞到请求`header`里 ,格式为:`{tokenName: tokenValue}`
-3. 以经典跨端框架`uni-app`为例:
+3. 以经典跨端框架 [uni-app](https://uniapp.dcloud.io/) 为例:
**方式1,简单粗暴**
@@ -35,7 +41,7 @@
url: 'https://www.example.com/request', // 仅为示例,并非真实接口地址。
header: {
"content-type": "application/x-www-form-urlencoded",
- "satoken": uni.getStorageSync('tokenValue') // 关键代码
+ "satoken": uni.getStorageSync('tokenValue') // 关键代码, 注意参数名字是 satoken
},
success: (res) => {
console.log(res.data);
@@ -77,7 +83,8 @@
### 其它解决方案?
-- 如果你对`cookie`非常了解,那你就会明白,所谓`cookie`,本质上就是一个特殊的`header`参数而已,
-- 而既然它只是一个`header`参数,我们就能就能手动模拟实现它,从而完成鉴权操作
-- 这其实是对无`cookie`模式的另一种解决方案,有兴趣的同学可以百度了解一下,在此暂不赘述
+如果你对`Cookie`非常了解,那你就会明白,所谓`Cookie`,本质上就是一个特殊的`header`参数而已
+而既然它只是一个`header`参数,我们就能就能手动模拟实现它,从而完成鉴权操作
+
+这其实是对`无Cookie模式`的另一种解决方案,有兴趣的同学可以百度了解一下,在此暂不赘述