我正在尝试根据用户角色限制 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
我无法让 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)
但这给了我一个错误,即权限被拒绝。
我究竟做错了什么?
笔记:
python firebase firebase-security firebase-authentication firebase-storage