重定向到基于角色不工作的操作.也许需要路由

本文关键字:操作 工作 也许 路由 于角色 角色 重定向 | 更新日期: 2023-09-27 17:51:07

我有以下控制器

public class GlobalAdminController : Controller
{
    // GET: GlobalAdmin
    [AuthorizeUser(Roles = "admin")]
    public ActionResult Index()
    {
        return View();
    }
}

home控制器是应用程序的主要登陆页面

public ActionResult Index()
{
    if(User.IsInRole("admin"))
    {
        RedirectToAction("Index", "GlobalAdmin");
    }
    return View();
}

重定向操作在调试器中执行但是,索引操作本身没有在全局admin

上执行。

我想知道是否有更好的方法来做到这一点?也许通过路由?

重定向到基于角色不工作的操作.也许需要路由

您必须使用return向浏览器提供重定向信息(url)。浏览器将重定向到新的位置。

public ActionResult Index()
{
    if(User.IsInRole("admin"))
    {
       return RedirectToAction("Index", "GlobalAdmin");
    }
    return View();
}

路由的目的是提供一种从控制器访问动作的方法。而不是访问GlobalAdmin/Index,您使用路由提供另一种方式,如admin/index

routes.MapRoute( 
     name: "Default", 
     url: "admin/{action}/{id}", 
     defaults: new { controller = "GlobalAdmin", action = "Index", id = UrlParameter.Optional } ); 
routes.MapRoute( 
     name: "Default", 
     url: "{controller}/{action}/{id}", 
     defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } );