相关疑难解决方法(0)

有没有办法在 firebase 存储规则中验证用户角色?

我正在尝试根据用户角色限制 Firebase 存储。

Database:
    users
        <uid>
            admin=false
            ... ... ...
Run Code Online (Sandbox Code Playgroud)

我正在尝试在 firebase 存储中使用以下类型的规则:

root.child('users').child(auth.uid).child('user').child('admin').val() == true
Run Code Online (Sandbox Code Playgroud)

将此添加到写入规则后,我的访问被拒绝。

谢谢。

firebase firebase-security firebase-authentication firebase-realtime-database firebase-storage

5
推荐指数
1
解决办法
3711
查看次数

具有自定义声明的 Firebase 存储规则

我无法让 Firebase Storage 使用自定义规则和自定义声明。

在我的 Python 管理面板中,我执行以下操作来创建用户并分配声明 client_id:

# Standard Auth
import firebase_admin
from firebase_admin import db, storage, auth
cred   = firebase_admin.credentials.Certificate('path_to_cert_json')
app    = firebase_admin.initialize_app(cred, 'config')
bucket = storage.bucket(app=app)

# Create User
auth.create_user(email=email) 

# Create custom claims
auth.set_custom_user_claims(uid, {'client_id': client_id})
Run Code Online (Sandbox Code Playgroud)

然后,对于 Firebase 规则,我尝试仅当文件位于具有 client_id 的子文件夹中时才允许用户读取(或下载)文件:

存储上的文件结构:

/{environment}/{client_id}/other_folders_and_files
Run Code Online (Sandbox Code Playgroud)

我设置了以下存储规则:

service firebase.storage {
  match /b/{bucket}/o {
    match /{environment}/{client_id}/{allPaths=**} {
      allow read: if request.auth.token.client_id == client_id
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

但这给了我一个错误,即权限被拒绝。

我究竟做错了什么?

笔记:

  • client_id 是正确的,文件夹结构是正确的,已经检查了一百万次。

python firebase firebase-security firebase-authentication firebase-storage

3
推荐指数
1
解决办法
3741
查看次数