考虑用户拥有有效的身份验证Cookie,但他们的帐户已被删除(来自其他位置)
WebSecurity.IsAuthenticated
返回true。
WebSecurity.CurrentUserName
尽管帐户被删除,仍会返回用户的用户名。据推测,此信息在auth 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重新评估用户的身份验证状态?我是否真的必须将它们重定向回我的网站才能重置此状态?假设他们张贴了?那是PITA。