我可以根据用户是否已经过身份验证来更改MVC控制器中的路由吗?

时间:2013-10-12 19:36:44

标签: asp.net-mvc

我为我的申请设置了以下路线:

routes.MapRoute("DefaultRedirect",
    "",
    new { controller = "Account", action = "Login" }
);

在我的控制器中我有:

[AllowAnonymous]
public ActionResult Login(string returnUrl)
{
    ViewBag.ReturnUrl = returnUrl;
    return View();
}

但是,如果用户已经过身份验证,我不想转到帐户控制器和登录操作。有没有什么方法可以在进入控制器之前检查身份验证,还是应该检查控制器然后更改为其他控制器/操作?

1 个答案:

答案 0 :(得分:1)

我认为你不能在路由配置中做到这一点。在ASP.NET MVC pipeline中进行身份验证之前进行路由,因此您没有任何上下文可以在路由配置中进行切换。如果用户已通过身份验证,则需要返回另一个ActionResult

[AllowAnonymous]
public ActionResult Login(string returnUrl)
{
    if(User.Identity.IsAuthenticated)
    {
        return RedirectToAction("Index", "Home");
    }

    ViewBag.ReturnUrl = returnUrl;
    return View();
}