1***@qq.com
1***@qq.com
  • 发布:2023-03-21 21:14
  • 更新:2024-04-01 19:59
  • 阅读:265

读权限设置仅读用户自己创建的提示“权限未通过”,同样的语法删除就可以实现仅删除自己创建的,为什么读就出错

分类:uniCloud

"bsonType": "object",
"required": ["content"],
"permission": {
"create": "auth.uid != null",
"read": "doc.user_id == auth.uid", //这个提示权限未通过
"delete": "doc.user_id == auth.uid", //相同语法,这个就没问题
"update": false
},
"properties": {
"_id": {
"description": "ID,系统自动生成"
},
"user_id": {
"bsonType": "string",
"description": "留言反馈用户ID\/回复留言用户ID,参考uni-id-users表",
"foreignKey": "uni-id-users._id",
"forceDefaultValue": {
"$env": "uid"
}
},
"create_date": {
"bsonType": "timestamp",
"title": "留言时间\/回复留言时间",
"forceDefaultValue": {
"$env": "now"
}
},
"content": {
"bsonType": "string",
"title": "留言内容\/回复内容",
"componentForEdit": {
"name": "textarea"
},
"trim": "right"
},
"imgs": {
"bsonType": "array",
"arrayType": "file",
"maxLength": 6,
"fileMediaType": "image",
"title": "图片列表"
}

2023-03-21 21:14 负责人:无 分享
已邀请:
1***@qq.com

1***@qq.com (作者)

进一步测试发现当数据库中仅有一个用户创建的信息时,创建信息的用户能读取;
但当表中有其他用户创建的数据库时,所用户都显示“权限未通过”。

1***@qq.com

1***@qq.com (作者)

问题解决了,前端加上where="user_id == $cloudEnv_uid"就好了!

<unicloud-db where="user_id == $cloudEnv_uid" v-slot:default="{data, loading, error, options}" collection="db-diary">  
    <view v-if="error">{{error.message}}</view>  
    <view v-else>  
        {{data}}  
    </view>  
</unicloud-db>
  • 1***@qq.com (作者)

    where="user_id == $cloudEnv_uid"

    2023-03-22 00:03

  • 呆狗的一生

    回复 1***@qq.com: 加上where条件是正确的。另外,你是怎么测试删除没有问题的。在HBuilderX的jql文件里的语句是不通过权限检查的。

    2023-03-22 00:56

  • 1***@qq.com (作者)

    回复 呆狗的一生: "permission": {

    "create": "auth.uid != null",

    "read": true,

    "delete": "doc.user_id == auth.uid", //相同语法,这个就没问题

    "update": false

    },

    这个情况下delete没加where时也能够成功删除对应用户的数据,非创建者点击删除会提示“权限未通过”

    2023-03-22 13:16

呆狗的一生

呆狗的一生 - 呆狗的一生

1***@qq.com

1***@qq.com

为什么我新增都报没权限。。

要回复问题请先登录注册