MVC 4 中的 FormsAuthentication:用户通过身份验证后不应打开登录页面

FormsAuthentication in MVC 4 : Once the user is authenticated login page should not be opened

我在 MVC4 应用程序中实现了 FormsAuthentication

<authentication mode="Forms">
  <forms loginUrl="~/Home/Index" timeout="1"  />
</authentication>

private void SetupFormsAuthTicket(string userName, bool persistanceFlag)
        {
            FormsAuthenticationTicket authTicket = new FormsAuthenticationTicket(1,
                                    userName,
                                    DateTime.Now,
                                    DateTime.Now.AddMinutes(1),
                                    persistanceFlag, ""
                                    );

            string encTicket = FormsAuthentication.Encrypt(authTicket);
            this.Response.Cookies.Add(new HttpCookie(FormsAuthentication.FormsCookieName, encTicket));
        }

此外,我可以修改timeout以防系统空闲,页面将重定向到登录页面。

现在我需要的是,如果用户已成功登录,那么如果用户在浏览器中输入登录 url,则 Login 页面不应打开。

如何实现相同的?

在您的登录页面顶部,添加以下剃须刀代码:

@if (Request.IsAuthenticated)
{
    Response.Redirect(Url.Action("Index", "Home"));
}

IndexHome 替换为您选择的 action/controller。如果用户通过身份验证,这将导致页面重定向。