Firebase Storageのパスへのアップロードをグループ単位で制御する方法はありますか? たとえば、特定のパスにしかアップロードできない場所やチームをアップロードできる管理者グループがあります。カスタム認証を使用せずにfirebase storageへのグループアクセスを作成する
答えて
少しずつ検索したところ、私はすぐに答えを見つけることができなかったので、今までのものを投稿します。これを行うための他の(より良い)方法があるかどうかを知ることは良いことです。
私は別のサーバーを使用しないようにしているので、カスタム認証トークンがありません。ただし、request.auth.uidはストレージルールで使用できます。 uidプロパティは、Auth領域で定義されたユーザーの1つに一致します。 request.auth.uidが定義したグループ内にあるかどうかをチェックする関数をストレージルールに作成する必要があります。
ファイアベースのストレージルールには、一意の構文があります。それはJavaScriptのように見えるが、そうではない。関数を定義することはできますが、その中にvarを宣言することはできません。さらに、利用可能なjavascriptのようなメソッドのサブセットがあります。例えば
、私が最初に失敗し、次を試してみました:
function isAdmin() {
return ["value","list"].indexOf(request.auth.uid) > -1;
}
service firebase.storage {...}
私はVARを定義しようとしたときに、ルールエディタはエラーを投げたまたは私は.indexOfを使用する際には、必ず「不正」が返さどちらか。
以下は、私のために働いてしまった。
function isAdmin() {
return request.auth.uid in {
"yaddayadddayaddUserIDKey":"User Name1"
};
}
function isSomeOtherGroup() {
return request.auth.uid in {
"yaddayaddaSomeOtherUID":"User Name2",
"YaddBlahBlahUID":"User Name3"
};
}
service firebase.storage {
match /b/<your bucket here>/o {
match /{allPaths=**} {
allow read, write: if isAdmin();
}
match /path/{allPaths=**} {
allow read, write: if isSomeOtherGroup() || isAdmin();
}
}
}
私はこの解決策を試しましたが、なんらかの理由で動作しませんでした。途中で見つけたその他の警告はありましたか? –
私は電子メールアドレス認証だけを使用していました。私はGoogleやfacebookの認証で試していませんでした。 – ecalvo
@ ecalvoの回答にコメントするには十分な評判がありません。だから私は答えを加えています。機能isAdmin()
は、次のようリストを提供することができます:実装の
function isAdmin() {
return request.auth !=null && request.auth.uid in [
"uidAdmin1",
"uidAdmin2",
"uidOfOtherAdminsAsCommaSeparatedStrings"
];
}
残りは@ecalvoの答えから借用することができます。私は今それがより明確であると感じる。 @ecalvoの答えでは、私はuidだけを比較しなければならないときになぜユーザー名を与えなければならないのか混乱しました。
- 1. 認証なしでgoogle firebase storageを使用する
- 2. カスタム認証プロバイダをFirebaseにリンクする
- 3. カスタムSessionsControllerを使用して認証を作成する
- 4. Firebase認証ユーザーの作成
- 5. タスクリスナーを使用せずにFirebase認証トークンを取得する方法は?
- 6. Firebaseの再認証を使用する
- 7. firebase custom authカスタム認証を行うワークフロー
- 8. カスタム認証を持つFirebase Javaクライアント
- 9. Firebase Storageローカルファイルへのダウンロードエラー
- 10. カスタム認証を使用するGolangリバースプロキシ
- 11. バックエンドでのカスタム認証 - 保存せずに実行時にユーザを作成する
- 12. Firebase Web Storage - ファイル名を指定せずにファイルをアップロード
- 13. 認証を使用してカスタムAPI呼び出しを作成する
- 14. 他のfirebaseプロジェクトでfirebase認証を使用する方法
- 15. AndroidアプリのリクエストFirebaseのカスタム認証
- 16. Firebaseのアップロードファイル、firebaseデータベース上の画像(firebase storage)Angular2を使用
- 17. サービスワーカーでフェッチを使用してFirebaseデータベースへの認証を処理する
- 18. 独自のカスタム認証サービスをFirebaseで使用できますか?
- 19. Unity3dのFirebase認証+ Firebaseストレージ
- 20. Firebase認証:Firebaseで自己定義の有効期限トークンを作成する
- 21. JHipsterライセンス認証を必要とせずにユーザーを作成する
- 22. Rails 3のカスタム認証と一緒にCanCan認証を使用する
- 23. 角度ファイヤーを使用せずにユーザーを認証
- 24. Polymerのカスタム要素でFirebaseユーザを認証する方法は?
- 25. Firebase RESTを使用するアプリケーションを作成する際に認証を処理する方法
- 26. Laravelでカスタムの認証クエリを作成する方法
- 27. IdentityServer4アクティブディレクトリを使用したカスタム認証
- 28. Spring Security 3.x:UserDetailsServiceを使用しないカスタム認証プロバイダの作成
- 29. WEB APIを使用したカスタム認証
- 30. ミドルウェアを使用したカスタム認証バックエンド
[ユーザーデータグループガイド](https://firebase.google.com/docs/storage/security/user-security)(グループのアプローチについて)、[ユーザーグループ、認証要求、カスタムトークン] (https://groups.google.com/forum/#!searchin/firebase-talk/groups$20auth$20claims%7Csort:relevance/firebase-talk/77i9CRlwg88/iQsE78CbGQAJ)グループディスカッション。 – Kato