uni-app schema 的 permission中 doc无效
uni-app schema 的 permission中 doc无效
操作步骤:
在schema 表级 permission中 read 设置 doc.xx == ‘任何已经存在的xx的值’
预期结果:
在前端获取相应表列表时,根据schema 表级 permission中 read 配置的 doc.xx == ‘***’ 的表达式来决定哪些条目可以被获取
实际结果:
在schema 表级 permission中 read 设置 doc.xx == ‘任何已经存在的xx的值’,运行结果中,获取相应表的列表,都报权限校验不通过
bug描述:
这是brand.schema.json配置:
{
"bsonType": "object",
"permission": {
"read": "doc.user_id == '669c290709664cbdd70486ad'",
"create": "'create-brand' in auth.permission",
"update": false,
"delete": false
},
"required": ["name"],
"properties": {
"_id": {
"description": "ID,系统自动生成"
},
"user_id": {
"bsonType": "string",
"foreignKey": "uni-id-users._id",
"description": "品牌拥有者ID, 参考`uni-id-users` 表",
"forceDefaultValue": {
"$env": "uid"
}
},
...
}
当前数据表中,有3条数据的user_id
字段的值都是’669c290709664cbdd70486ad‘,但是运行后,获取列表时报权限校验未通过:
在uni-app中,schema
的permission
字段是用来定义应用跳转时所需权限的。然而,如果你遇到permission
中doc
无效的情况,这可能是由于几个原因造成的。首先,确保你使用的uni-app版本支持你想要使用的特定权限,并且你正确地配置了manifest.json
文件。
在uni-app中,permission
字段通常用于指定跳转到小程序或应用时需要的权限,比如phoneNumber
(获取手机号权限)。然而,doc
并不是一个标准的uni-app权限类型。如果你的意图是处理某种文档权限,你可能需要自定义逻辑来处理这种情况。
下面是一个基本的例子,展示如何在uni-app中配置permission
来请求获取手机号权限:
// manifest.json
{
"mp-weixin": { // 微信小程序配置
"appid": "your-app-id",
"setting": {
"urlCheck": false
},
"permission": {
"scope.userInfo": {
"desc": "你的位置信息将用于小程序位置接口的效果展示"
},
"scope.userPhone": {
"desc": "你的手机号将用于快捷登录"
}
}
}
}
在页面的JavaScript代码中,你可以这样请求权限:
// pages/index/index.vue
<template>
<view>
<button open-type="getPhoneNumber" @getphonenumber="getPhoneNumber">获取手机号</button>
</view>
</template>
<script>
export default {
methods: {
getPhoneNumber(e) {
if (e.detail.errMsg === "getPhoneNumber:ok") {
// 发送临时登录凭证到后台换取手机号
const { encryptedData, iv } = e.detail;
// 这里发送encryptedData和iv到你的服务器进行解密
uni.request({
url: 'https://your-server.com/decrypt',
method: 'POST',
data: {
encryptedData,
iv
},
success: (res) => {
console.log('解密后的手机号:', res.data.phoneNumber);
}
});
} else {
console.error('获取手机号失败:', e.detail.errMsg);
}
}
}
}
</script>
由于doc
不是一个标准的uni-app权限,如果你需要处理文档相关的权限,你可能需要在你的应用中实现自定义的权限检查逻辑。例如,你可以在用户尝试访问某个文档之前,检查他们的角色或权限状态,并根据结果允许或拒绝访问。这通常涉及到后端服务的支持,以验证用户的身份和权限。