ASP.NET MVC - 根据角色的多个默认索引页

问题描述 投票:0回答:2

是否有可能通过的路线做基于角色的重定向?我的目的是重定向到网页上根据他的角色的用户,而无需使用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
            );

        }
    }
asp.net-mvc roles
2个回答
1
投票

路由是在应用程序启动安装程序,所以用户进行身份验证和这样的前成立的路线。你可以做的是使用一个通用的操作方法:

public ActionResult Go()
{
   if (User.IsInRole("Admin")) {
     return RedirectToAction("List", "User");
   }
   else {
     return RedirectToAction("Index", "Home");
   }
}

浏览所有用户这一点去操作方法,它会重定向到相应的地方。


0
投票

如果你想为这两种情况的路径是相同的,但页面是有不同的内容,您也可以return不同Views:

public ActionResult GetStartPage()
{
   // ...

   if (User.IsInRole("Admin"))
   {
     return View("~/Views/Home/List.cshtml", viewModel);
   }
   else
   {
     return View("~/Views/Home/Index.cshtml", viewModel);
   }
}

这不是组织你Views的最佳方式,但这种使用情况发生,那就是你可以很容易地实现它们。

© www.soinside.com 2019 - 2024. All rights reserved.