要件: ユーザーは、セッション期間ごとに1回のみログインできます。例えば、2つの異なるマシンからウェブサイトにユーザがログインした場合、ウェブサイトは「アカウントはすでに使用中です。」というメッセージを表示します。これは、ユーザーが2つの異なるブラウザからログインした場合に適用されます。複数のマシンから同じアカウントを使用することを避けるにはどうすればよいですか?
"InProc"セッションを使用するWebアプリケーションで作業しています。アプリは、次の操作を行います
A- When user login, Put Session_ID, user_ID and IP in a table called Sessions.
B- When Session_End is called, Set the row of Sessions table to be marked InActive.
C- When Application_Start is called, the web app deactivate all Sessions.
まず:私はこれが好きではない、それは、データベース内のデッドロックが発生します。私はまだその理由を確認することはできません。
Second:セッションプールのリサイクル時にSession_Endが呼び出されると、MSDNのページに「session_end gurantee」と表示されることがあります。 http://msdn.microsoft.com/en-us/library/system.web.sessionstate.sessionstatemodule.end.aspx
もっと良いアイデアはありますか? Session_Endは毎回と呼ばれますかアプリケーションプールはリサイクルされていますか?私はあなたが持っているものだと思う
おかげ
は20回と無解答を見ると、それはあまりにも複雑ですか?またはあまりにも難しい質問を理解するために! – Costa
注:ユーザーがブラウザを閉じると、前回のセッションが終了するまで再びログインできなくなります。彼らは "バグ"としてそれを記録する前に、ステークホルダーにそれを伝えるようにしてください。 –