ASP.NET MVC - 如何禁用登录用户?

时间:2011-11-12 03:22:12

标签: asp.net-mvc

我正在使用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();
    }

代码正常工作,直到我退出,然后此代码不再有效。请告诉我正确的方法。

2 个答案:

答案 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() { ... }