2

我为我的应用程序设置了以下路线:

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

在我的控制器中,我有:

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

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

4

1 回答 1

1

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

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

    ViewBag.ReturnUrl = returnUrl;
    return View();
}
于 2013-10-12T19:45:34.830 回答