From 0e15e0f9f2d8c0198935ec81f1dce5db6e316724 Mon Sep 17 00:00:00 2001 From: heavensoft Date: Tue, 30 Mar 2021 23:39:11 +0800 Subject: [PATCH] update docs/uniCloud/uni-id.md. --- docs/uniCloud/uni-id.md | 118 ++++++++++++++++++++-------------------- 1 file changed, 59 insertions(+), 59 deletions(-) diff --git a/docs/uniCloud/uni-id.md b/docs/uniCloud/uni-id.md index 00d3b659c..3b4e50ea6 100644 --- a/docs/uniCloud/uni-id.md +++ b/docs/uniCloud/uni-id.md @@ -14,7 +14,7 @@ `uni-id`包括如下组成部分: -1. 云数据库 +1.云数据库 主表为 `uni-id-users` 表,保存用户的基本信息。扩展字段有很多,如实名认证数据、工作履历数据,开发者可以自由扩展。 @@ -22,13 +22,13 @@ 所有`uni-id`的数据表,在uniCloud web控制台新建表的界面上,都可以选择这些数据表模板,直接建好。 -2. 云函数 +2.云函数 提供一个名为`uni-id`的公共模块,该模块封装了一系列API,包括注册、登录、修改密码、设置头像等。 示例工程中还提供了一个`user-center`的云函数,演示在云函数中如何调用`uni-id`公共模块。 -3. 前端调用 +3.前端调用 前端示例通过callfunction调用云函数`user-center`,在注册和登录时保存token。 @@ -1003,21 +1003,21 @@ exports.main = async function(event,context) { return res } ``` - -### 创建uni-id实例@create-instance - -> uni-id 3.0.7及以上版本 - -用法:`uniID.createInstance(Object CreateInstanceParams);` - -CreateInstanceParams内可以传入云函数context,**主要用于在单实例多并发的场景(目前uniCloud还未支持,后续会提供)** - + +### 创建uni-id实例@create-instance + +> uni-id 3.0.7及以上版本 + +用法:`uniID.createInstance(Object CreateInstanceParams);` + +CreateInstanceParams内可以传入云函数context,**主要用于在单实例多并发的场景(目前uniCloud还未支持,后续会提供)** + ```js // 云函数代码 const uniID = require('uni-id') -exports.main = async function(event,context) { - const uniIDIns = uniID.createInstance({ // 创建uni-id实例,其上方法同uniID - context: context +exports.main = async function(event,context) { + const uniIDIns = uniID.createInstance({ // 创建uni-id实例,其上方法同uniID + context: context }) payload = await uniIDIns.checkToken(event.uniIdToken) // 后续使用uniIDIns调用相关接口 if (payload.code) { @@ -1029,11 +1029,11 @@ exports.main = async function(event,context) { }) return res } -``` - -**为什么需要自行创建uni-id实例** - -默认情况下uni-id某些接口会自动从全局context内获取客户端的PLATFORM(平台,如:app-plus、h5、mp-weixin)信息。但是在单实例多并发的场景下可能无法正确获取(全局对象会被后面的请求覆盖,可能会导致前面一次请求使用了后面一次请求的PLATFORM信息)。因此推荐在开启云函数单实例多并发后,自行为uni-id传入context。 +``` + +**为什么需要自行创建uni-id实例** + +默认情况下uni-id某些接口会自动从全局context内获取客户端的PLATFORM(平台,如:app-plus、h5、mp-weixin)信息。但是在单实例多并发的场景下可能无法正确获取(全局对象会被后面的请求覆盖,可能会导致前面一次请求使用了后面一次请求的PLATFORM信息)。因此推荐在开启云函数单实例多并发后,自行为uni-id传入context。 ## 手机号码 @@ -2840,37 +2840,37 @@ uni-id-users表内存储的password字段为使用hmac-sha1生成的hash值, // 当前角色拥有'your permission id'对应的权限 } ``` - -## 自定义token内容@custom-token - -> uni-id 3.0.7及以上版本,且需要使用[uni-config-center](https://ext.dcloud.net.cn/plugin?id=4425) - -自`uni-id 3.0.0`起,支持在token内缓存用户的角色权限。但是某些情况下开发者可能还希望缓存一些别的东西,以便在客户端能方便的访问(**注意:不可缓存机密信息到token内**)。 - -**用法** - -在`uni-config-center`模块内的uni-id插件内创建`custom-token.js`内容如下: - -```js -module.exports = async (tokenObj) => { - // tokenObj为原始token信息结构如下 - // { - // uid: 'abc', // 用户id - // role: [], // 用户角色列表 - // permission: [] // 用户权限列表,admin角色的用户权限列表为空数组 - // } - - tokenObj.customField = 'hello custom token' // 自定义token字段 - return tokenObj // 注意务必返回修改后的token对象 -} -``` - -uni-id会自动加载custom-token.js进行处理,在所有生成token的操作(包括:登录、注册、token过期自动刷新、开发者自行调用createToken)执行时自动获取新token信息,并生成token。 - -**注意** - -- 使用custom-token时自行调用createToken接口会变为异步操作,需使用`await uniID.createToken(...)` -- 不要删除原始token内的字段 + +## 自定义token内容@custom-token + +> uni-id 3.0.7及以上版本,且需要使用[uni-config-center](https://ext.dcloud.net.cn/plugin?id=4425) + +自`uni-id 3.0.0`起,支持在token内缓存用户的角色权限。但是某些情况下开发者可能还希望缓存一些别的东西,以便在客户端能方便的访问(**注意:不可缓存机密信息到token内**)。 + +**用法** + +在`uni-config-center`模块内的uni-id插件内创建`custom-token.js`内容如下: + +```js +module.exports = async (tokenObj) => { + // tokenObj为原始token信息结构如下 + // { + // uid: 'abc', // 用户id + // role: [], // 用户角色列表 + // permission: [] // 用户权限列表,admin角色的用户权限列表为空数组 + // } + + tokenObj.customField = 'hello custom token' // 自定义token字段 + return tokenObj // 注意务必返回修改后的token对象 +} +``` + +uni-id会自动加载custom-token.js进行处理,在所有生成token的操作(包括:登录、注册、token过期自动刷新、开发者自行调用createToken)执行时自动获取新token信息,并生成token。 + +**注意** + +- 使用custom-token时自行调用createToken接口会变为异步操作,需使用`await uniID.createToken(...)` +- 不要删除原始token内的字段 # 迁移指南@migration @@ -2900,14 +2900,14 @@ uniCloud admin可以平滑升级到uni-id 3.0.0。如果要缓存角色权限到 受第一步影响app/init内无法获取用户信息,可以额外调用uniID的getUserInfo获取 可以参考此次提交进行调整:[uniCloud admin](https://github.com/dcloudio/uniCloud-admin/commit/8359d699aacb8f7d074fce9aa82a36474cb6e7df) - -#### 使用uni-config-center@uni-config-center - -> uni-id 3.0.7及以上版本 - -从插件市场导入支持uni_modules的uni-id,会自动安装依赖的uni-config-center到uni_modules内。如果此前并没有使用uni-config-center可以直接将uni-id的config.json移至`uni-config-center/uni-id/config.json`即可(可以参照插件市场的uni-id示例项目) - -- uni-id会优先使用uni-config-center内添加的配置 + +#### 使用uni-config-center@uni-config-center + +> uni-id 3.0.7及以上版本 + +从插件市场导入支持uni_modules的uni-id,会自动安装依赖的uni-config-center到uni_modules内。如果此前并没有使用uni-config-center可以直接将uni-id的config.json移至`uni-config-center/uni-id/config.json`即可(可以参照插件市场的uni-id示例项目) + +- uni-id会优先使用uni-config-center内添加的配置 - 如果批量上传后报“请在公用模块uni-id的config.json或init方法中内添加配置项”,请重新上传一次`uni-config-center` # FAQ -- GitLab