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"));
}
将 Index
和 Home
替换为您选择的 action/controller。如果用户通过身份验证,这将导致页面重定向。
我在 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"));
}
将 Index
和 Home
替换为您选择的 action/controller。如果用户通过身份验证,这将导致页面重定向。