Firebase存储规则导致用户无权访问

时间:2017-12-22 23:34:17

标签: android firebase firebase-storage firebase-security

我正在尝试从firebase存储加载用户个人资料图片,但我一直遇到原因(1 of 1):

  

com.google.firebase.storage.StorageException类:用户无权访问此对象。

使用以下方式验证用户:

mFirebaseAuth.signInWithEmailAndPassword(mEmailView.getText().toString(), mPasswordView.getText().toString())

以下是我的火力计规则:

service firebase.storage {
  match /b/brainbeats-e9839.appspot.com/o {
    match /user/{userId}/{allPaths=**} {
      allow read, write: if request.auth.uid == userId;
    }
  }
}

像这样滑行加载:

    StorageReference storageReference = FirebaseStorage.getInstance().getReference();
    StorageReference imageStorage = storageReference.child("images/" + user.getArtistProfileImage());

    GlideApp.with(this)
            .load(imageStorage)
            .into(mArtistCoverImage);

1 个答案:

答案 0 :(得分:0)

您的规则允许访问以下内容:

/user/{userId}/{allPaths=**}

所以用户下的任何路径都是用户ID位置,然后是任何

但您正在访问

/images/xyzpath

现在因为它不在/ user / variable userid /下,你会得到一个例外。

为什么不在用户节点下移动图像,如:

/user/{userId}/images/yourpath

如果auth规则匹配,这应该停止给出错误。如果未经授权的用户访问另一个用户ID,它仍然会崩溃,所以最好将所有内容放入try catch块中