遮眼罩
遮眼罩
  • 发布:2023-06-29 21:38
  • 更新:2023-07-12 21:42
  • 阅读:226

permission update设置false,用户的role不是admin,仍然可以更新记录

分类:uniCloud

1、schema 表的设置:

"permission": {  
        "read": "auth.uid != null",  
        "create": "auth.uid != null",  
        "update": false

2、uni-id-users 表数据:用户的role设置为["feeder"],不是admin

此两个条件下,仍然可以更新表,求教。

另外,已清缓存。

2023-06-29 21:38 负责人:无 分享
已邀请:
DCloud_uniCloud_WYQ

DCloud_uniCloud_WYQ

  1. 该用户有权限变动吗?如果有变动权限后有重新登录吗
  2. schema改完后上传了吗?
  3. 连接的是本地还是云端云函数
  • 遮眼罩 (作者)

    1:没有权限变动

    2、已上传

    3、云端云函数

    2023-07-12 17:10

遮眼罩

遮眼罩 (作者)

把create设置为false,也能增加记录。
无头绪。。。

"permission": {  
        "read": "auth.uid != null",  
        "create": false,  
        "update": false,  
        "delete": "doc.userId == auth.uid && 'feedOwner' in auth.role"  
    },
遮眼罩

遮眼罩 (作者)

设置create为false
1、用ClintDB来 add,增加失败,权限校验未通过;
2、用云函数来add,增加成功。

何解?@DCloud_uniCloud_WYQ

遮眼罩

遮眼罩 (作者)

云函数:

'use strict';  
const db = uniCloud.database()  
exports.main = async (event, context) => {  
    //event为客户端上传的参数  
    // console.log('event : ', event)  
    await db.collection("test").add({  
        "type" : 999  
    }).then(res=>{  
        console.log("res",res)  
    }).catch(err=>{  
            console.error(err)  
    });  

    //返回数据给客户端  
    return event  
};

clientDB:

db.collection("test").add({  
            "type" : 999  
        }).then(res=>{  
            console.log("res",res)  
        });

test.schema.json:

{  
    "bsonType": "object",  
    "required": [],  
    "permission": {  
        "read": "auth.uid != null",  
        "create": false,  
        "update": false,  
        "delete": "doc.userId == auth.uid && 'feedOwner' in auth.role"  
    },  
    "properties": {  
        "_id": {  
            "description": "ID,系统自动生成"  
        },  
        "type": {  
            "bsonType": "int",  
            "title": "类型",  
            "description": "纸盒:1001 冰袋 : 1002",  
            "defaultValue":1001  

        }  

    }  
}  
遮眼罩

遮眼罩 (作者)

好像云函数中必须使用对吧JQL写法,才会触发权限校验。

  • 遮眼罩 (作者)

    好像云函数中必须使用 dbJQL 写法,才会触发权限校验。


    const dbJQL = uniCloud.databaseForJQL({

    event,

    context

    })

    const queryRes = await dbJQL.collection('test').add({

    "type" : 999

    })

    2023-07-12 19:39

遮眼罩

遮眼罩 (作者)

dbJQL 又好像不支持 transaction

要回复问题请先登录注册