3

HttpContext で利用可能なものを使用して、ASP.Net であるシステムを別のシステムから識別できるようにする必要があります。利用可能な ServerVariables の多くを使用しようとしましたが、多くの場合、システムはイメージから構築されたドライブから構成されています。したがって、ファイアウォールのために IP アドレスが同じであり、すべてのサーバー変数 (browseragent、logonuser) が同じであるため、異なるマシンを区別する何かを見つける必要があります。サイトはフォーム認証で保護されているため、Windows 統合認証をオフにする必要があります (そうしないと、別の Logon_User 値にアクセスできます)。

私は HttpContext と結婚していませんが、コードを使用して識別可能なユーザー情報を取得する唯一の方法のように思えます。

編集/更新:

@Robert Harvey は、多くの結果をもたらすいくつかの検索リンクを提供しましたが、そのほとんどは何らかの理由で私の法案に適合しません (ただし、私が考えもしなかった素晴らしいアイデアがいくつかありますが)前)。主に、誰かがファイアウォールの背後でマシンを切り替えたかどうかを識別できる必要があります。そこで、特定のことがうまくいかない理由を明らかにするコード構造の詳細を提供します。

  1. セッション/Cookie は真夜中まで永続的です (決定は私の頭の中で行われました。私はそれと共に生きています)
  2. 認証されたユーザーは、MembershipUser クラスを使用しません。(たとえそれがあったとしても、MembershipUser.IsOnline は以前にログインしたユーザーしか提供しません)
  3. ユーザーは、ログオフせずに Cookie を削除したり、ブラウザを閉じたりすることが知られています
  4. 必ずしも同時ログインを防ぐためではなく、少なくともそれらを識別するために、あるマシンと別のマシンを区別できる基準が必要です。
4

2 に答える 2

0

ログイン時にGUIDを生成し、それをCookieに保存し、データベースのユーザーレコードに対して保存します。

同時ログインがある場合は、リクエストごとにこれを比較してください。

明確にするために、このCookieはフォーム認証のようなセッションCookieであり、削除するととにかくログアウトされます。

于 2010-07-18T01:27:33.857 に答える
0

これは自己回答です。Browser Spyに出くわしました。これを行う方法の詳細については触れていませんが、これらの項目を組み合わせることで、最小限の誤差で特定のシステムを一意に識別できることが示されています。

于 2010-08-10T17:33:59.467 に答える