From d27fd53e1d04ee2a7dc51b55d72013e96dac2cee Mon Sep 17 00:00:00 2001 From: linju Date: Fri, 4 Jun 2021 15:04:41 +0800 Subject: [PATCH] =?UTF-8?q?1.=E4=BF=AE=E6=94=B9=E6=96=87=E6=A1=A3=E9=A1=BA?= =?UTF-8?q?=E5=BA=8F=EF=BC=8C=E5=85=88=E4=BB=8B=E7=BB=8Dchecktoken?= =?UTF-8?q?=E5=86=8D=E4=BB=8B=E7=BB=8D=E9=9C=80=E8=A6=81checktoken?= =?UTF-8?q?=E9=85=8D=E5=A5=97=E4=BD=BF=E7=94=A8=E7=9A=84=E5=85=B6=E4=BB=96?= =?UTF-8?q?API=E3=80=82=202.=E6=96=B0=E5=A2=9E=E8=A7=A3=E9=87=8A=E4=B8=BA?= =?UTF-8?q?=E4=BB=80=E4=B9=88=E8=A6=81=E7=94=A8checktoken?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/uniCloud/uni-id.md | 92 +++++++++++++++++++++-------------------- 1 file changed, 48 insertions(+), 44 deletions(-) diff --git a/docs/uniCloud/uni-id.md b/docs/uniCloud/uni-id.md index 4952a0834..b6729b9c6 100644 --- a/docs/uniCloud/uni-id.md +++ b/docs/uniCloud/uni-id.md @@ -580,51 +580,15 @@ exports.main = async function(event,context) { } ``` -### 登出 -登出就是一个验证客户端uniCloud.callFunction自带的uniIdToken并获取user_id,将对应user_id的用户的token清空的过程(uniID登出api内部会自动完成,你传入uniIdToken即可)。 - -#### 思考 -如果你并没有服务端开发经验,可能会想:为什么这里需要通过token去换取user_id,而不是让客户端直接传递user_id更方便?这里就涉及到安全问题,有一句话叫做:“前端传递的参数都是不可信任的”。比如:你去银行取款应当出示你的身份证来证明你是谁,而不是直接告诉银行柜台你是谁就管用。 - -用法:`uniID.logout(String token);` - -**注意** - -- 登出成功之后应删除持久化存储的token,键值为:`uni_id_token`,`uni.removeStorageSync('uni_id_token')` - -```js - uni.removeStorageSync('uni_id_token') - uni.removeStorageSync('uni_id_token_expired') -``` - -**参数说明** - -| 字段| 类型 | 必填| 说明 | -| --- | --- | --- | --- | -| token | String| 是 |用户token| - -**响应参数** - -| 字段| 类型 | 必填| 说明 | -| --- | --- | --- | --- | -| code| Number| 是 |错误码,0表示成功| -| message | String| 是 |详细信息 | - -**示例代码** - -```js -// 云函数logout代码 -const uniID = require('uni-id') -exports.main = async function(event,context) { - const res = await uniID.logout(event.uniIdToken) - return res -} - -``` +### token校验@checktoken +这是一个校验客户端发起请求(uniCloud.callFunction)自带的uniIdToken,获得用户的uid、token、token的过期时间、角色、权限、用户信息(uni-id-users全部字段)的API。 +这是非常高频且重要的API通常用于换取操作当前云函数的用户Id。 -### token校验@checktoken -理论上所有后端操作涉及账户信息都需要使用token校验。“前端传递的参数都是不可信任的”。比如:你去银行取款应当出示你的身份证来证明你是谁,而不是直接告诉银行柜台你是谁就管用。 +#### 思考 +如果你并没有服务端开发经验,可能会想:为什么需要通过token去换取用户Id,而不是让客户端直接传递用户Id更方便? +这里就涉及到安全问题,有一句话叫做:“前端传递的参数都是不可信任的”。比如:你去银行取款应当出示你的身份证来证明你是谁,而不是直接告诉银行柜台你是谁否则这是一个极大的安全漏洞。 +综上所述:所有服务端操作涉及账户信息相关内容,都需要使用token来获得,而不是使用前端传递的参数。 用法:`uniID.checkToken(String token, Object checkTokenOptions)` @@ -720,6 +684,46 @@ uniCloud.callFunction({ ``` + +### 登出 +登出就是一个验证客户端uniCloud.callFunction自带的uniIdToken通过token校验并获取uid,将对应uid的用户的token清除的过程(uniID登出api内部会自动完成,你传入uniIdToken即可)。 + +用法:`uniID.logout(String token);` + +**注意** + +- 登出成功之后应删除持久化存储的token,键值为:`uni_id_token`,`uni.removeStorageSync('uni_id_token')` + +```js + uni.removeStorageSync('uni_id_token') + uni.removeStorageSync('uni_id_token_expired') +``` + +**参数说明** + +| 字段| 类型 | 必填| 说明 | +| --- | --- | --- | --- | +| token | String| 是 |用户token| + +**响应参数** + +| 字段| 类型 | 必填| 说明 | +| --- | --- | --- | --- | +| code| Number| 是 |错误码,0表示成功| +| message | String| 是 |详细信息 | + +**示例代码** + +```js +// 云函数logout代码 +const uniID = require('uni-id') +exports.main = async function(event,context) { + const res = await uniID.logout(event.uniIdToken) + return res +} + +``` + ### 生成token@createtoken 注意createToken接口不会将生成的token存库,只是生成token而已 @@ -1268,7 +1272,7 @@ exports.main = async function(event,context) { | password |String | 否 |密码,type为`register`时生效 | | inviteCode |String | 否 |邀请人的邀请码,type为`register`时生效 | | myInviteCode |String | 否 |设置当前注册用户自己的邀请码,type为`register`时生效 | -| needPermission| Boolean | 否 |设置为true时会在checkToken时返回用户权限(permission),建议在管理控制台中使用 | +| needPermission| Boolean | 否 |设置为true时会在checkToken时返回用户权限(permission),建议在管理控制台中使用 | | role | Array | 否 |设定用户角色 ,当前用户为新注册时生效 | **响应参数** -- GitLab