规则集如下保护用户输入:
规则如下:
match /users/{userId} {
allow read: if isCurrentUser(userId) || isAdmin();
allow write: if (isCurrentUser(userId) && !isModifyingPermissions()) || isAdmin();
function isModifyingPermissions(){
return request.resource.data['permissions'] != null;
}
}
我坚持使用isModifiyingPermissions()
函数。如果请求具有permissions
属性的值,它将正确拒绝写入。但是,如果没有提供permissions
属性,则该规则将崩溃,说明如下:
Error: simulator.rules line [19], column [15]. Property permissions is undefined on object.
一个人怎么写“检查请求资源上某个属性的存在”?
答案 0 :(得分:2)
好,这是解决方法:
function isModifyingPermissions(){
return request.resource.data.keys().hasAny(["permissions"]);
}