我没主意了。希望新的眼光能有所帮助。
我有以下安全规则:
function isUser (request, userKey) {
return request.auth.uid == userKey;
}
function isAuthorized(request){
return request.auth.uid != null;
}
function isAdmin (request) {
return root.child('users').child(request.auth.uid).child('isAdmin').val() == true;
}
service cloud.firestore{
match /databases/{database}/documents {
match /users/{uid} {
allow create: if isAuthorized(request) || isAdmin(request);
allow update: if isUser(request, uid) || isAdmin(request);
}
match /userReadable/{objectType}/{uid} {
allow read: if isUser(request, uid) || isAdmin(request);
allow write: if isAdmin(request);
}
match /userWriteable/{objectType}/{uid} {
allow read: if isAdmin(request);
allow write: if isUser(request, uid) || isAdmin(request);
}
match /userOwned/{objectType}/{uid} {
allow read: if isUser(request, uid) || isAdmin(request);
allow write: if isUser(request, uid) || isAdmin(request);
}
}
}
我正在下面的代码中设置文档:
FirebaseFirestore db = getDB();
PulseFirebaseModel pulse = new PulseFirebaseModel((PulseModel) object);
try {
final DocumentReference doc = db.collection(COLLECTION_USER_WRITABLE)
.document(OBJECT_PULSE_SAMPLE)
.collection(FirebaseApp.getInstance().getUid())
.document();
doc.set(pulse, SetOptions.merge())
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if(task.isSuccessful()){
Log.d(TAG, "Saved sample: " + doc.getId() +"\t"+doc.getPath());
onSuccess();
}else{
onFailure("Could not save Ppg\t"
+ task.getException().getMessage()
+ "\ndoc Path:" + doc.getPath()
+ "\ndoc id: " + doc.getId()
+ "\n" + task.getResult());
}
}
});
} catch (FirebaseApiNotAvailableException e) {
e.printStackTrace();
}
}
我简直想不通。任何帮助都将不胜感激。
由于使用document()写入自动生成的文档ID,因此规则需要在路径末尾包含文档ID的通配符:
match /userWriteable/{objectType}/{uid}/{docId} { // <== added /{docId}
allow read: if isAdmin(request);
allow write: if isUser(request, uid) || isAdmin(request);
}
我的Firestore数据库有一些用户和一些s。如果没有其他人认领,用户可以认领。他们通过在上创建一个文档来声明,该文档有一个名为的字段,该字段是对他们自己的用户文档的引用。 我想我已经在这些安全规则中捕捉到了: 但是,当为所有权删除文档时,我获得了: 我是这样做的: 如果我打开read和write设置为true的文档,就不会出现此异常。 我的规则怎么了?他们用模拟器测试正常。
我在编写部署在Tomcat上的Grails应用程序时遇到了一些奇怪的问题。 在创建简单的测试控制器之后,我想在包com中编写测试内容 我有个例外: 类java.io.FileNotFoundException消息/home/user/domains/domain.com/public_html/the-file-name.txt(Brak dost rpu) 我已经将chmod设置为777到。而是
假设我有一个集合,其中包含子集合。餐厅权限设置在餐厅文档中,如下所示: 餐馆 任何有权访问餐厅的人也可以访问它的任何子集合,包括子集合。这是安全规则: 安全规则 查询餐厅列表可以这样完成,而且效果很好: 查询餐厅 现在如何查询子集合?我知道Firestore需要根据查询推断权限,而不查看底层数据。从逻辑上讲,这应该是可能的,因为任何可以访问的人也可以访问子集合。但是我如何组合这个子集合查询,以便F
在这一点上我得到了警告: 如何让它保存文件?当我在Eclipse上创建它时,这是可行的,但是现在我更新并移到了Android Studio中,它似乎坏了一些东西。
我在Kotlin构建了一个应用程序,在节点中有一个后端。js。我允许用户在客户端应用程序上使用Firebase身份验证登录/注册。 该应用程序的部分功能是让用户通过Firebase的实时数据库在线保存数据。应用程序内部发生的事情是,一旦用户登录,我就会将他/她的uid传递到后端,后端会向数据库发出请求。 当数据库的规则是允许每个人读/写时,一切都正常工作。一旦我把它们改成这样: } 我一直被拒绝许
我正在用Flutter开发一个应用程序。我在Firestore上有一个结构为:users/(UserID)/collection/document的数据库,这里UserID是创建(UserID)文档的用户的唯一uid。代码用于获取用户的uid is 其中user是FireBaseUser的实例。我试图设置这样的规则,即只有当request.auth.uid与(UserID)文档id匹配时,只有用户