提交 0e15e0f9 编写于 作者: DCloud_Heavensoft's avatar DCloud_Heavensoft 提交者: Gitee

update docs/uniCloud/uni-id.md.

上级 350f64e0
......@@ -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
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册