【问题标题】:ASP.NET MVC truly log off with Forms AuthenticationASP.NET MVC 真正使用表单身份验证注销
【发布时间】: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 都是正确的。因此,当我的视图呈现时,它仍然表现得好像用户已登录。有人可以提供解决方案和/或解释吗?

【问题讨论】:

    标签: asp.net asp.net-mvc forms-authentication logout


    【解决方案1】:

    FormsAuthentication.SignOut() 移除了认证cookie,所以你需要在它之后重定向而不是返回一个视图以便通知客户端:

    public ActionResult Logoff()
    {
        FormsAuthentication.SignOut();
        return RedirectToAction("Index");
    }
    

    现在在Index 操作中,用户将不再经过身份验证。

    【讨论】:

    • 达林说得对。我有时会返回一个“return Redirect(FormsAuthentication.LoginUrl);”这会将用户发送回您在 web.config 的身份验证区域中声明的登录页面。真的一样……
    猜你喜欢
    • 1970-01-01
    • 2010-11-07
    • 1970-01-01
    • 1970-01-01
    • 2010-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多