ASP.NET MVC 真正使用表单身份验证注销
Posted
技术标签:
【中文标题】ASP.NET MVC 真正使用表单身份验证注销【英文标题】:ASP.NET MVC truly log off with Forms Authentication 【发布时间】:2011-02-18 02:49:21 【问题描述】:我在控制器上有一个注销操作:
public ActionResult Logoff()
var x = Request.IsAuthenticated;
var y = User.Identity.IsAuthenticated;
FormsAuthentication.SignOut();
Session.Abandon();
var a = Request.IsAuthenticated;
var b = User.Identity.IsAuthenticated;
return View();
但是,x、y、a 和 b 都是正确的。因此,当我的视图呈现时,它仍然表现得好像用户已登录。有人可以提供解决方案和/或解释吗?
【问题讨论】:
【参考方案1】:FormsAuthentication.SignOut()
移除了认证cookie,所以你需要在它之后重定向而不是返回一个视图以便通知客户端:
public ActionResult Logoff()
FormsAuthentication.SignOut();
return RedirectToAction("Index");
现在在Index
操作中,用户将不再经过身份验证。
【讨论】:
达林说得对。我有时会返回一个“return Redirect(FormsAuthentication.LoginUrl);”这会将用户发送回您在 web.config 的身份验证区域中声明的登录页面。真的一样……以上是关于ASP.NET MVC 真正使用表单身份验证注销的主要内容,如果未能解决你的问题,请参考以下文章
使用自定义数据库而不是 ASPNETDB 的 ASP.NET MVC 身份验证?
ASP.NET MVC 表单身份验证 + 授权属性 + 简单角色
如何支持 NTLM 身份验证并回退到 ASP.NET MVC 中的表单?
表单身份验证、ASP.NET MVC 和 WCF RESTful 服务
将 asp.net WebForms 应用程序中的组合表单/Windows 身份验证迁移到 asp.net MVC 应用程序