まず第一に、私のアプリケーションでは、ログアウトしてもセッションは引き続き有効であり、ログインページにリダイレクトされるだけでなく、同じページにとどまることに注意することが重要です。
そうは言っても、MVCアプリケーションでサインアウトするために使用するこれらの2つの方法のどちらか
FormsAuthentication.SignOut()
WebSecurity.Logout()
効果は同じで、すぐにアクセスした場合、次のプロパティはどちらもログアウトを反映するように変更されません。
User.Identity.Name
Thread.CurrentPrincipal.Identity
今-リダイレクトを実行するか、ページをリロードするだけの場合、明らかにこれらのプロパティはnullユーザーに更新されます。User.Identity.Name
ログアウトしたばかりのユーザーを表すという意味ではありません。
ログイン/ログアウト後にフォームのテキストを生成したいので、これは問題ですYou are logged in as XXX
-これは、リダイレクトが不可能なAJAX状況にある可能性があります。
IPrincipal
ログアウト(またはログイン)後に自分自身をリセットするようにトリガーする方法があるかどうか知りたいです。
Redirect()
私は通常、電話をかけた直後の人を想定してLogout()
いるので、これが問題になることはありませんが、AJAXの状況では、これが常に実用的であるとは限りません。
私の現在の解決策は、自分のラッパーでIDを抽象化することです。したがって、ログアウトしたら、それを更新するだけです。IPrincipal
特に誰かがラッパーを介さずに直接アクセスした場合、これがいくつかのあいまいな副作用をもたらす可能性があることを少し心配しています。