2

永続的な Cookie を使用したフォーム認証の場合を考えてみましょう。

同じユーザーが 2 つの異なるブラウザーまたは 2 つの異なるマシンを使用してログインした場合、ユーザーがブラウザー/マシンの 1 つからログアウトしても、他のブラウザー/マシンからログインすることはできませんか?

通常、Web アプリケーションはこのケースをどのように処理しますか?

4

3 に答える 3

4

私は、ほとんどの部分で Srinivas に同意しなければなりません。これが私のテーマです

  1. ログイン時に、ログイン時に生成された GUID を使用して HTTP のみの Cookie を作成します。これがブラウザ/コンピューター キーになります。ブラウザを閉じると Cookie が削除されます
  2. ユーザー ID を取得する
  3. ユーザーテーブルのペアで永続化します ex: user:a, key:12345
  4. ユーザーが認証された後の後続のリクエスト認証アルゴリズム
  5. 現在のユーザーIDでデータベースで最後に使用されたキーを取得します
  6. Cookie が存在することを確認し、存在しない場合は完全に認証を解除します
  7. Cookie の値がデータベースの値と同じであることを確認し、そうでない場合は完全に認証を解除します

この方法では、その後のログインで再認証が必要になり、他の認証が無効になります。事実上、ユーザーは 1 つのブラウザー/コンピューターのみを使用するように強制されます。

于 2014-10-07T05:42:30.337 に答える
1

私は通常、この方法でそれを行います: ユーザーテーブル (データベース内) にセッション列があります。ユーザーがログインすると、値Yが格納されます。ログアウトすると、値をNに変更します。ユーザーがログインしようとするたびにで、対応するセッション列の値を確認し、Yの場合はユーザーに既にログインしていることを伝え、Nの場合はユーザーのログインを許可します。ただし、注意して値を設定する必要があります。ユーザーがログアウトするかブラウザーを閉じると、N になります

于 2013-01-09T11:29:16.920 に答える