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

时间:2015-08-28 10:32:09

标签: asp.net-mvc c#-4.0 forms-authentication

我在FormsAuthentication申请中实施了MVC4

<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页面。

如何实现同样的目标?

1 个答案:

答案 0 :(得分:0)

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

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

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