私は、複数の人に同じメッセージを送信できるメッセージングiOSアプリケーションを開発しています。メッセージはfirebaseストレージに保存されます。私は、メッセージを送信したユーザーのみがストレージからメッセージを読むことができるようにしたいと考えています。私はすでにfirebaseデータベースにこのルール構造を実装しています。Firebase Storage uidsのリストのカスタムメタデータセキュリティルール
これを格納用に実装するには、メッセージを作成した人のfromUidキーを含め、メッセージファイルcustomMetadataにuidのリストを追加します。私は私のiOSアプリで次の操作を行います。
var metadataValues = [String:String]()
for friendUid in friendsSelected.keys {
metadataValues.updateValue(friendUid, forKey: friendUid) // how do I access these values in my security rules
}
metadataValues.updateValue(senderUid, forKey: "fromUid") // how do I access this in security rules
let messageMetadata = FIRStorageMetadata()
messageMetadata.customMetadata = metadataValues
は、これは私の読み取りのための私の試みであったとFirebaseストレージにメッセージノードのためのセキュリティルールを記述するが、それは動作しません。また、ドキュメントは役に立たないのです。
match /messages/{messageId} {
allow read: if request.auth.uid == resource.metadata.request.auth.uid; // I want all friend uids to be able to read file
allow write: if request.auth.uid == resource.metadata.fromUid; // only the person who create the message can access it
}
私の試行はうまくいきません。 'fromUid'キーを使用してcustomMetadata変数にアクセスするにはどうすればいいですか?また、友人は自分のセキュリティルールで 'request.auth.uid'を使用しますか?
傍注として、私はcustomMetadataに追加するキーの数に制限はないと仮定します。
これは本当に助けになります。何らかの理由で私が試したことのすべてがうまくいかない。 – Edward