重定向到基于角色不工作的操作.也许需要路由
本文关键字:操作 工作 也许 路由 于角色 角色 重定向 | 更新日期: 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 } );