是否有可能通过的路线做基于角色的重定向?我的目的是重定向到网页上根据他的角色的用户,而无需使用RedirectToAction
在登录操作(POST),以提高网站的响应速度。
我想是这样的。
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
if (User.IsInRole("Admin"))
{
routes.MapRoute(
"Admin", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "User", action = "List", id = UrlParameter.Optional } // Parameter defaults
);
}
else
{
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
}
}
路由是在应用程序启动安装程序,所以用户进行身份验证和这样的前成立的路线。你可以做的是使用一个通用的操作方法:
public ActionResult Go()
{
if (User.IsInRole("Admin")) {
return RedirectToAction("List", "User");
}
else {
return RedirectToAction("Index", "Home");
}
}
浏览所有用户这一点去操作方法,它会重定向到相应的地方。
如果你想为这两种情况的路径是相同的,但页面是有不同的内容,您也可以return
不同View
s:
public ActionResult GetStartPage()
{
// ...
if (User.IsInRole("Admin"))
{
return View("~/Views/Home/List.cshtml", viewModel);
}
else
{
return View("~/Views/Home/Index.cshtml", viewModel);
}
}
这不是组织你View
s的最佳方式,但这种使用情况发生,那就是你可以很容易地实现它们。