MVC 4注销无法正常工作

时间:2014-03-14 14:26:07

标签: asp.net-mvc asp.net-mvc-4 form-authentication

我有注销操作,可以注销并重定向到登录页面,但是当我在没有注销的情况下关闭浏览器并在注销时再次打开时,它会直接重定向到登录操作而无需访问注销操作

    [OutputCache(NoStore=true, Duration=0)]
    public ActionResult LogOut()
    {
        FormsAuthentication.SignOut();
        Session.Abandon();
        HttpContext.User = null;

        HttpCookie cookie1 = new HttpCookie(FormsAuthentication.FormsCookieName, "");
        cookie1.Expires = DateTime.Now.AddYears(-1);
        Response.Cookies.Add(cookie1);


        HttpCookie cookie2 = new HttpCookie("ASP.NET_SessionId", "");
        cookie2.Expires = DateTime.Now.AddYears(-1);
        Response.Cookies.Add(cookie2);

        HttpCookie cookie3 = new HttpCookie("myCookie");
        cookie3.Expires = DateTime.Now.AddYears(-1);
        Response.Cookies.Add(cookie3);

        FormsAuthentication.RedirectToLoginPage();
        return null;
    }

这是我的webconfig设置

<authentication mode="Forms"> 
    <forms loginUrl="~/Account/LoginPage" 
           defaultUrl="~/User/MyKids" 
           timeout="99999999" 
           slidingExpiration="true" /> 
</authentication>

2 个答案:

答案 0 :(得分:0)

我不确定你的意思&#34;再打开&#34;但是如果你试图访问系统的一部分需要&#34;登录&#34;用户,然后系统检测到您没有有效的身份验证,并且您将重定向到配置中指定的登录页面。它不会尝试将您注销,只是尝试登录。在这种情况下这是正常行为。

答案 1 :(得分:0)

这是默认行为。我猜你使用会话cookie的表单身份验证。因此,当您再次打开浏览器并访问注销页面时,forms-authentication-module会检测到没有有效的cookie可用,并将您重定向到登录页面。

将createPersistentCookie设置为true,以记住用户:http://msdn.microsoft.com/en-us/library/twk5762b%28v=vs.110%29.aspx