0

ユーザーが一度に複数のブラウザーにログインできないようにするという単純な要件があります。同じブラウザで大丈夫です。

実行できる最も簡単なことは何ですか?

技術: .net 4.0 および sql サーバー 2008 R2

4

1 に答える 1

1

以下の私のアドバイスを参照してください。

  1. ユーザーLastActivityDateごとに保存します。asp.net を使用している場合SqlMembershipProvider- このフィールドはそこに存在し、別の認証メカニズムを使用している場合 - おそらく作成し、特定のユーザーの要求ごとに更新する必要があります。
  2. LoggedIn各ユーザーに追加のブール フィールドを追加します。ユーザーがログインすると、このフィールドは true に設定されます。asp.net を使用している場合は、その値をフィールドSqlMembershipProviderに格納できます。Comment
  3. ユーザーがブラウザを閉じると、サーバーにリクエストを送信してユーザーを「ログアウト」させます。これは、LoggedInフィールドを に設定することを意味しfalseます。window.onbeforeunloadそのためにJavaScriptイベントを使用します。
  4. ユーザーのログイン時LoggedInに、ユーザーのフィールドを確認する必要があります。false の場合は、操作を処理するだけです。そうでない場合はLastActivityDate、値を確認する必要があります。値がタイムアウトよりも古い場合は、定義した (たとえば 3 分) 操作を処理します。そうでない場合 - 拒否し、エラー メッセージを表示します。window.onbeforeunloadが常に実行されることを保証できないため、この追加のチェックが必要です。
  5. 最後のステップは、更新するタイムアウトで結果的にサーバー アクションを呼び出す JavaScriptLastActivityDateです。このスクリプトは、ログインしたユーザーがアクセスできる各ページで定義する必要があります。

アプローチが明確であることを願っています。

于 2013-04-25T12:59:57.547 に答える