Asp.net mvc 我是否可以根据用户是否已通过身份验证来更改MVC控制器中的路由?
我为我的申请设置了以下路径:Asp.net mvc 我是否可以根据用户是否已通过身份验证来更改MVC控制器中的路由?,asp.net-mvc,Asp.net Mvc,我为我的申请设置了以下路径: routes.MapRoute("DefaultRedirect", "", new { controller = "Account", action = "Login" } ); 在我的控制器中,我有: [AllowAnonymous] public ActionResult Login(string returnUrl) { ViewBag.ReturnUrl = returnUrl; return View(); } 但是,
routes.MapRoute("DefaultRedirect",
"",
new { controller = "Account", action = "Login" }
);
在我的控制器中,我有:
[AllowAnonymous]
public ActionResult Login(string returnUrl)
{
ViewBag.ReturnUrl = returnUrl;
return View();
}
但是,如果用户已经通过身份验证,我不想转到帐户控制器和登录操作。是否有某种方法可以在进入控制器之前检查身份验证,或者我是否应该签入控制器,然后更改为其他控制器/操作?我认为在路由配置中无法做到这一点。路由在中的身份验证之前发生,因此您没有任何上下文在路由配置中进行切换。如果用户经过身份验证,则需要返回另一个
ActionResult
[AllowAnonymous]
public ActionResult Login(string returnUrl)
{
if(User.Identity.IsAuthenticated)
{
return RedirectToAction("Index", "Home");
}
ViewBag.ReturnUrl = returnUrl;
return View();
}
谢谢你的帮助。在这种情况下,我想重定向到主控制器和索引操作。是否可以直接指向另一个控制器中的某个操作?我个人会签入目标控制器,因为它应该很少被调用。也就是说,您可以使用自定义路由处理程序(您可以在那里手动检查表单验证cookie)来做您想要做的事情,但是为什么还要进行额外的工作呢。