让我们在我的应用程序启动时注册以下路线:website.com/slug -> page1.aspx
但我怎样才能像这样重新注册该路线:website.com/slug -> page2.aspx
我知道我可以清除我的 RouteTable 并再次注册我的路线,但这会弄乱网站上每个人的路线。
有没有办法为特定用户注册新路线?
让我们在我的应用程序启动时注册以下路线:website.com/slug -> page1.aspx
但我怎样才能像这样重新注册该路线:website.com/slug -> page2.aspx
我知道我可以清除我的 RouteTable 并再次注册我的路线,但这会弄乱网站上每个人的路线。
有没有办法为特定用户注册新路线?
您希望始终可以编写自己的自定义 Route 类,根据用户的用户名/角色成员身份将用户重定向到特定区域......虽然重定向也可以是您登录操作的一部分
[HttpPost]
public ActionResult Login(LoginCredentials user)
{
// authenticate
...
if (User.IsInRole("admin"))
{
return this.RedirectToAction("Index", "User", new { area = "Admin" });
}
return this.RedirectToAction("Index", "User");
}
This action assumes there's Admin area in your application.
Custom route constraint
另一种可能性是有自定义路由约束。因此,您实际上会定义两条路线,但一条路线具有特定的约束:
routes.MapRoute(
"Admin", // Route name
"{controller}/{action}/{id}",
new { area = "Admin", controller = "User", action = "Index", id = UrlParameter.Optional },
new { isAdmin = new AdminRouteConstraint() }
);
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}",
new { controller = "User", action = "Index", id = UrlParameter.Optional }
);
这样,您就可以将管理员路由到应用程序的管理区域,并为他们提供他们在那里拥有的特定功能。但这并不意味着他们需要一个管理区域。这只是我的路线定义。您可以按照您想要的方式定义路由默认值。