Firebase 使用运行时生成的集合设置Firestore安全规则
每当新用户注册到我的应用程序时,我的Firestore数据库就会创建一个新集合。集合的名称是新用户的用户名。我想使此集合中的文档具有受限的写访问权限Firebase 使用运行时生成的集合设置Firestore安全规则,firebase,google-cloud-firestore,firebase-security,Firebase,Google Cloud Firestore,Firebase Security,每当新用户注册到我的应用程序时,我的Firestore数据库就会创建一个新集合。集合的名称是新用户的用户名。我想使此集合中的文档具有受限的写访问权限 service cloud.firestore { match /databases/{database}/documents { match /User1/{info} { allow read: if signedIn(); allow write: if isOwner(User1); }
service cloud.firestore {
match /databases/{database}/documents {
match /User1/{info} {
allow read: if signedIn();
allow write: if isOwner(User1);
}
function signedIn() {
return request.auth != null;
}
function isOwner(userId) {
return request.auth.uid == userId;
}
}
}
如果当前用户是
User1
,但不适用于任何注册的新用户,则此选项有效。如何将此Firestore安全规则添加到每个新用户?我注意到第一个规则与/User1/{info}
匹配,这意味着它将匹配集合User1
中的任何路径。相反,如果使用括号,该值将变为通配符,这意味着匹配将适用于任何值。有关更多信息,请查看中的示例
service cloud.firestore {
match /databases/{database}/documents {
match /{username}/{info} {
allow read: if signedIn();
allow write: if isOwner(username);
}
function signedIn() {
return request.auth != null;
}
function isOwner(userId) {
return request.auth.uid == userId;
}
}
}
我注意到第一条规则与
/User1/{info}
匹配,这意味着它将匹配集合User1
中的任何路径。相反,如果使用括号,该值将变为通配符,这意味着匹配将适用于任何值。有关更多信息,请查看中的示例
service cloud.firestore {
match /databases/{database}/documents {
match /{username}/{info} {
allow read: if signedIn();
allow write: if isOwner(username);
}
function signedIn() {
return request.auth != null;
}
function isOwner(userId) {
return request.auth.uid == userId;
}
}
}
为每个用户收集可能不是一个好主意。请考虑使用每个用户使用UID的文档,然后根据需要使用子集合。唯一的问题是,我正在使用我的应用程序的颤动,我无法理解如何在颤动中访问子集合。.为每个用户收集可能不是一个好主意。请考虑使用每个用户使用UID的文档,然后根据需要使用子集合。唯一的问题是,我正在使用我的应用程序的颤动,我无法理解如何在颤动中访问子集合。。问题是,我在运行时创建了其他集合,这些集合不存储用户信息,而是存储其他信息。我想对这些集合应用不同的规则,但这样做不允许我这样做。然后你应该为这些集合添加单独的规则。问题是,我在运行时创建了其他集合,这些集合不存储用户信息,而是存储其他信息。我想对这些集合应用不同的规则,但这样做不允许我这样做。那么您应该为这些集合添加单独的规则。