WebSecurity.Logout()然后WebSecurity.IsAuthenticated返回true

时间:2013-06-27 15:11:25

标签: c# asp.net-mvc simplemembership

考虑用户拥有有效的身份验证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。

0 个答案:

没有答案