2017-08-21 3 views
1

私は一度に複数のユーザーが同時にログインするシステムを作成していますが、 。 2人で同じデータを見ることができないように、どうすればいいですか?ユーザー名:adminがレコード:123を探していて、ユーザー名:ユーザーがレコードにアクセスしたい場合:123ユーザーは「申し訳ありません管理者は既にそのレコードを見ています」と感謝の気持ちでお待ちください。ReactJs誰かが既にページ内に入っている場合にページを読み込まないようにしてください

どうすれば他のユーザーをロックアウトすることができますか?

あなたは左側のボックスであなたのレコードを検索し、検索をクリックすると、結果の右側にこの結果ペインが表示されます。私はそれを望んでいるので、あなたがレコードにあなたを連れて行くが、レコードの誰かが私が上に書いたことを言ってほしいと思うなら、それを開くようにしたい。

enter image description here

+0

あなたのしたことの簡単な説明を表示しますか? – Rowland

+0

私はそれが反応ロジックに関連しているとは思わない...もしノードjsとしてバックエンドを使用してソケットで試してみると、ユーザーがレコードを開いてdb値を開いて操作する。 –

+0

@ローランド私はあなたのためにそれを更新しました –

答えて

1

は、これを達成する簡単な方法はありません、とブラウザが他のブラウザ上で何が起こっているかを認識していないとして、あなたはそれをクライアント側を行うことはできません。

socket.ioのようにサーバー側に何かを実装する必要があります。

ソケットを使用すると、別のユーザーがレコードにアクセスしたときに、現在ログインしているすべてのユーザーにwebsocketプッシュを発行できます。例えば

  1. あなたの例で、ユーザーの管理者がレコード123
  2. に入るその後、現在のユーザーでログインして他のすべてに通知を送信し、ユーザ管理者は、現在のレコード123を見ていることを伝えることができると言うことができます。
  3. クライアント側では(店舗にReduxのようなものを使用していると仮定して)、レコードを更新してを読み取り不可能または表示不可能にすることができます。

*ユーザーは、あなたがそのレコードのロックを解除する必要があります、画面の外に移動したときに、しかし心に留めておく必要があるものがあります。その問題は、ユーザーが複数の操作(ブラウザの戻るボタンを押す、ページを閉じる、アプリケーションの他のページに移動するなど)を行ってページを離れることができることです。これを理解する方法が必要になります。いったん完了したら、すべてのユーザーを更新して、レコードが利用可能である旨の通知を出し、上記の手順を繰り返します。

それが十分に説明されていることを希望し、もっと明確にする必要がある場合は教えてください。

+0

あなたの手順は良いですが、私はもう一歩進んで、最初にロードしたレコードとデータベースに格納されているレコードが異なるまで、誰かが見たり編集したりするのを防ぐことはできません。つまり、他の誰かがあなたがそれをロードしてからそのレコードを編集して保存しました。誰かがレコードを見ているときに単にユーザーをロックアウトすることは、悪い考えです(スクリーンからレコードを開いたまま1時間か2時間コンピュータから離れて歩いているが、何もしていないそれに)。 – Adam

+0

これは非常に良い点です。このシナリオでは、他の人が見ている間はアクセスできないため、誰もそのレコードを見ることができません。 –

+1

OPの仕様によれば、私は仕様が変更されるべきであるという点を確認しようとしていました。これは意味をなさないためです。私はこれらの厳密なスペックを前に、このタイプのアプリケーションを構築しました。レコードを利用できないようにし、他の誰かが単にそれを見ているだけでは意味がありません。ユーザーAは、現在ロックアウトされているユーザーBが実際に何らかの編集を行う必要があり、そのように行えないようにするために、読取り専用の目的で(詳細情報を表示したい)Bを開くとどうなりますか? – Adam

関連する問題