我正在使用ASP.NET MVC 4.当我们构建项目时,默认情况下会添加AccountController
。您可以创建一个帐户并立即登录...但在他们登录后,尝试键入http://localhost:port/Account/LogOn
。您仍然使用登录表单停留在“登录”页面。
我尝试使用以下代码重定向用户:
//
// GET: /Account/LogOn
[AllowAnonymous]
public ActionResult LogOn()
{
if(Membership.GetUser().UserName != null)
RedirectToAction("Index", "Home");
return ContextDependentView();
}
代码正常工作,直到我退出,然后此代码不再有效。请告诉我正确的方法。
答案 0 :(得分:3)
修正:
//
// GET: /Account/LogOn
[AllowAnonymous]
public ActionResult LogOn()
{
if(User.Identity.IsAuthenticated)
{
return RedirectToAction("Index", "Home");
}
else
{
return ContextDependentView();
}
}
答案 1 :(得分:1)
您不必复制权限检查代码 - 改为编写过滤器并多次使用它而不重复代码。
public class GuestsOnlyAttribute : ActionFilterAttribute
{
public override void OnActionExecuting( ActionExecutingContext filterContext )
{
if( User.Identity.IsAuthenticated )
{
filterContext.Result = new ViewResult { ViewName = "RestrictedArea" };
}
}
}
在您的控制器中
// GET: /Account/LogOn
[GuestsOnly]
public ActionResult LogOn() { ... }