0

問題に入る前に、私はいくつかの文脈をお伝えしたいと思います。現在私はユーザーとセッションを持っています。ユーザーは、ユーザーを考えるときに通常考えているものですが、セッションは会議と考えることができます。これらの会議にはプライベートとしてマークを付けることができます。その場合、Firebaseデータベースのセキュリティルールを使用して、ユーザーが会議に参加していない限り、その会議を読み書きできないようにします。アプリの招待状は招待状(主催者からのもの)ダイナミックリンクを使用した招待受諾

これまで問題がありました:セッションに直接リンクしてダイナミックリンクを使用してユーザーをセッションに招待したいと思いますが、私はこれをデータベースセキュリティルールでモデル化する方法を知っています。

「ダイナミックリンクからここに招待された人は、自分をセッションに招待するアクセス権があります」と言う人はいませんか?この場合、私は、ユーザーが誰を招待するかわからないという問題があると思います。

+0

この問題の現在提案されている解決策は、セッションに格納するランダムなプッシュキーを生成し、動的リンクにクエリパラメータとして埋め込むことです。 ユーザーがリンクをクリックすると、アプリが開き、ランダムキーを抽出してデータバインドのプレフィックス(例:linkInvites/{userId}/{pushKey})に移動します。 firebaseルールは、このキーをチェックして、ユーザーがセッションにアクセスする必要があるかどうかを判断します。これがうまくいくなら、私はこれを答えとして掲示します。 – orrett3

答えて

0

私は以前のコメントを使用して自分の問題を解決したように見えます。私は、新しいプッシュキーを生成し、ダイナミックリンクを使用してキーを配布することに決めました。

DBではどのように見えますか?
私はセッションのランダムなキーを保持するためにfirebaseでパスを作成しました:

dynamicInvites/sessions/{sessionId} 
"somerandomkey" 

、そのセッションを言うセキュリティルールがあるほか、ユーザー

dynamicInvites/users/{userId} 
{ 
    "somerandomkey": {timestamp} 
} 

に分配されたキーを保持するためのパスセッションXのXとランダムキーは、ユーザーAがセッションXのランダムプッシュキーを持っていないか、セッションのメンバーでない限り読み取ることができません。

どのようにキーを配布しましたか?
セッションのユーザーはランダムキーにアクセスできるため、ランダムキーとセッションIDをクエリーストリングとして動的リンクを生成できます。

ユーザーがリンクをクリックすると、ランダムキーとセッションIDをリンクからプルするアプリケーションにリダイレクトされ、現在の時間と共にダイナミックサイトのユーザーパスの下にランダムキーが挿入され、セッションを使用してセッションが開きますid。現在の時刻は、これらのキーの定期的なクリーンアップを実行したい場合に使用されます。

なぜセッションからのものではなく、別のプッシュキーを使用するのですか?
セッションのプッシュキーは、DB内の複数の場所にあり、クライアントにロードされる可能性があるためプライベートとはみなされません。ユーザーがリンクをクリックしたときに、私はスプラッシュスクリーンを使用して、この時間をマスクし
ものの、アプリ起動時にDBの更新を実行

はユーザーフレンドリーではありません。通常の起動時にスプラッシュ画面が表示されるので、これはユーザーが期待する通常の動作です。

関連する問題