From bece3100dc7d8dcb985dec957ab0021f1b287643 Mon Sep 17 00:00:00 2001 From: wangyaqi Date: Wed, 30 Sep 2020 16:00:27 +0800 Subject: [PATCH] docs: uni-id & uniCloud storage --- docs/uniCloud/storage.md | 14 ++++++++++++++ docs/uniCloud/uni-id.md | 15 +++++++++++++-- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/docs/uniCloud/storage.md b/docs/uniCloud/storage.md index 1cae95ea8..4e1f5cc0a 100644 --- a/docs/uniCloud/storage.md +++ b/docs/uniCloud/storage.md @@ -64,6 +64,20 @@ - 腾讯云`cloudPath` 为文件的绝对路径,包含文件名 foo/bar.jpg、foo/bar/baz.jpg 等,不能包含除[0-9 , a-z , A-Z]、/、!、-、\_、.、、\*和中文以外的字符,使用 / 字符来实现类似传统文件系统的层级结构。 - 腾讯云`cloudPath`为文件标识,相同的`cloudPath`会覆盖,如果没有权限覆盖则会上传失败。阿里云以自动生成的ID为文件标识,不会存在覆盖问题 +**关于腾讯云是否有权限覆盖/删除云端文件** + +腾讯云使用[自定义登录](uniCloud/authentication.md)的方式确定用户身份。以下以默认权限”所有用户可读,仅创建者及管理员可写“为例进行讲解 + +默认情况下用户以匿名身份登录(为了方便暂时称此身份为“匿名用户A”) + + - 云端路径不存在则可以成功上传。 + - 云端路径存在并且是匿名用户A创建的可以成功上传 + - 云端路径存在并且并非匿名用户A创建的会上传失败 + +匿名用户A身份过期之后再次获取的身份并不是”匿名用户A“(暂记为”匿名用户B“),这时匿名用户B是没有权限覆盖匿名用户A上传的文件的。 + +如果使用了[自定义登录](uniCloud/authentication.md),那么云存储就可以确定用户身份,这时候用户可以覆盖自己上传的文件,删除同理。 + #### 响应参数 |字段 |类型 |说明 | diff --git a/docs/uniCloud/uni-id.md b/docs/uniCloud/uni-id.md index e9fdc2b1b..f7fc16304 100644 --- a/docs/uniCloud/uni-id.md +++ b/docs/uniCloud/uni-id.md @@ -165,13 +165,24 @@ DCloud暂无计划开发百度、头条、QQ等小程序的登录,以及Apple ## 角色权限@rbac -自`1.1.9`版本起uni-id支持角色权限(通常情况下管理后台会需要角色权限)。除API列表内列出的角色权限相关的接口外,还有以下调整: +自`1.1.9`版本起uni-id支持角色权限(通常情况下管理后台会需要角色权限)。除[角色权限API](uniCloud/uni-id.md?id=rbac-api)内列出的角色权限相关的接口外,还有以下调整: 1. 所有登录注册接口可以接收`needPermission`参数,配置为true时会在`checkToken`接口返回用户权限(permission),否则permission字段会是一个空数组。开发者可以在用户登录管理后台时,传入此参数表示当前登录的用户需要返回permission。 2. 新增两个数据表`uni-id-roles`、`uni-id-permissions`,可以使用示例项目里面的db_init.json创建,也可以直接使用opendb中的这两个数据表 -角色权限相关API请参考[角色权限API](uniCloud/uni-id.md?id=rbac-api) +以管理后台为例,开发者可以在用户登录时传入`needPermission: true`。在checkToken时返回的结果中会包含role和permission,可以据此判断用户有没有权限进行操作。 + +```js +// 简单的权限校验示例 +function hasPermission(token, permission) { + const checkTokenRes = await uniID.checkToken(token) + if(checkTokenRes.code) { + return false + } + return checkTokenRes.permission.includes(permission) +} +``` **注意** -- GitLab