3

SSOログインプロセスでは、SQLServerのカスタムユーザーストアに対してフォーム認証を使用します。

新しいセキュリティ要件の1つは、アカウントが一度に1つのアクティブなセッションのみを持つことを許可することです。そのため、ユーザーがログインするたびに、ログイン資格情報がすでにアクティブになっているかどうかを確認し、できれば、他のセッションが終了するまで新しいユーザーが再度ログインできないようにします。または、実装が簡単な場合は、他のセッションを強制的に終了することもできます。

フォーム認証でこれを行う簡単な方法はありますか?データベース内の各セッションを追跡するカスタムアプローチを検討しましたが、それは多くの作業であり、おそらく、session_endを検出するためにすべてのアプリケーションを変更する必要がありますが、これは避けたいと思っています。これを処理する何かがFormsAuthにある必要があると思います。

MembershipUser.IsOnline()メソッドを見てきましたが、これは理想的なようですが、Membershipプロバイダーを使用していません。

更新:明確にするために、現在のユーザーがログインしているかどうかを確認する必要はありません。他の誰かが同じアカウントを使用してすでにログインしているかどうかを知る必要があります。

4

3 に答える 3

7

これを試して:

System.Web.HttpContext.Current.User.Identity.IsAuthenticated
于 2009-02-05T17:08:02.403 に答える
2

プロパティがnullでない場合、HttpContext.Current.Userそれらはログインしています。そしてIdentity.IsAuthenticatedtrueです。

于 2009-02-05T17:07:48.723 に答える
2

あなたが正しいと理解した場合、ユーザー ID に基づいて最後のアクティビティ状態を保存する必要があります。Membership.IsOnline() は、メンバーシップ データベースに保持されているLastActivityDateプロパティ
をチェックすることによって実装されます。 したがって、どこかで、ユーザー アクティビティを追跡する必要があります。 ユーザー アクティビティのタイムスタンプを更新する httpmodule を実装することもできます。


于 2009-02-05T17:18:00.887 に答える