ユーザーが有効な認証 Cookie を持っているが、アカウントが (別の場所から) 削除されていると考えてください。
WebSecurity.IsAuthenticated
true を返します。
WebSecurity.CurrentUserName
アカウントが削除されているにもかかわらず、ユーザーのユーザー名を返します。おそらく、この情報は認証 Cookie で暗号化されています。
IsAuthenticated
結局のところ、現在の HttpContext のリクエストから回答を取得します。
this._context.User.Identity.IsAuthenticated
したがって、軽減するには:
var userName = WebSecurity.CurrentUserName;
using (var userDb = new UsersContext())
{
var usr = userDb.UserProfiles.SingleOrDefault(u => u.UserName == userName);
if(usr == null)
{
WebSecurity.Logout();
}
}
しかし、この後でも:
WebSecurity.IsAuthenticated == true
WebSecurity.CurrentUserName == "myDeletedUser'sName"
これはあまり役に立ちません。
この情報をクリアして、WebSecurity にユーザーの認証状態を再評価させるにはどうすればよいですか? この状態をリセットするためだけに、本当にそれらを自分のサイトにリダイレクトする必要がありますか? 彼らが投稿したと仮定しますか?それはピタです。