我为我的申请设置了以下路线:
routes.MapRoute("DefaultRedirect",
"",
new { controller = "Account", action = "Login" }
);
在我的控制器中我有:
[AllowAnonymous]
public ActionResult Login(string returnUrl)
{
ViewBag.ReturnUrl = returnUrl;
return View();
}
但是,如果用户已经过身份验证,我不想转到帐户控制器和登录操作。有没有什么方法可以在进入控制器之前检查身份验证,还是应该检查控制器然后更改为其他控制器/操作?
答案 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();
}