1

インターネットまたはイントラネット Web アプリケーションへの同時アクセスを制限したい。

特定の数の同時アクセスを許可できるようにしたいのですが、同じユーザー名を使用して最大 20 の同時アクセスを許可したいとします。

ログイン時にセッションを作成し、カウンターをインクリメントしてDBに保存することを想像できますが、ユーザーがログオフしている場合、ユーザーがブラウザーを閉じるだけなので、DBからセッションを削除してカウンターをデクリメントする方法はありません。

みんな、あなたの意見から最善の方法は何ですか?

ありがとう、

4

2 に答える 2

1

ユーザーがブラウザを終了しただけなのか、コードを引っ張っただけなのかを知ることができないという点で、あなたは正しいです。

30 秒ごとに Ajax 呼び出しを行うタイマーを作成し、ログに記録します。ユーザーが 60 秒間このログに記録されていない場合は、サーバーに破棄してください。
これは、誰かが一晩中ブラウザを開いたままにし、スロットを占有することを止めるものではありません.

「最後にアクティブな」フィールドに言及する別の回答があります。一方、誰かがブラウザーを開いたままにして、タイムアウト制限の分を超えて何かを見る必要がある場合、これは台無しになります。

ユーザー/タイムアウト制限のために誰かがスローされた場合; スロットが再び開いている場合は、完全に透過的に自動的に再度ログインできるとよいと思います。

あまり考えなくても、この解決策は別の問題を生むと思います。

編集:
私がコメントしたように - 20 人のユーザー - あなたは本当に正しい問題を解決していますか?

于 2012-05-10T09:12:22.873 に答える
0

セッションに「lastactive」フィールドが必要な場合があります。誰かがログインまたはセッションの作成を試みた場合、一定時間 (たとえば 15 分) 内にアクティブだったすべてのセッションを照会し、結果のカウントを使用してアクティブな同時セッションの数を知ることができます。

于 2012-05-10T09:16:28.020 に答える