我正在使用firestore,我的安全规则不起作用!我想根据登录的用户访问数据库,我的结构是这样的,user/userid/user的集合。登录用户只允许访问自己的数据/userId/自己的数据。
我的安全规则:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /user/{userId}{
allow read, write: if request.auth.uid == userId;
match /{subCollections=**} {
allow read, write: if request.auth.uid == userId;
}
}
}
}
注意:同样的&代码结构适用于Email和密码身份验证,但不适用于电话身份验证。
问题解决了!当我联系firebase支持时,他们告诉我,我在模拟中遇到的错误是因为ID与请求的ID不匹配,这很明显。所以我的错误是,我在路径区域使用通配符,如user/{userId},而不是user/randomId324234....现在它正在正常工作
更新
request.auth.token.sub
为实时数据库request.auth.uid
用于Firestore
确保每个数据库使用正确的信息和参数,并确保用户在访问数据请求之前成功登录。
来源:https://firebase.google.com/docs/rules/rules-and-auth leverage_user_information_in_rules