我正在尝试ASP.NET MVC路由,当然偶然发现了一个问题.我有一个部分,/ Admin/Pages /,这也可以通过/ Pages /访问,它不应该.我能错过什么?
global.asax中的路由代码:
public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( "Pages", // Route name "Admin/Pages/{action}/{id}", // URL with parameters // Parameter defaults new { controller = "Pages", action = "Index", id = "" } ); routes.MapRoute( "Default", // Route name "{controller}/{action}/{id}", // URL with parameters // Parameter defaults new { controller = "Home", action = "Index", id = "" } ); }
谢谢!
我建议在开头添加/ Pages /的显式路由.
问题是它由默认路由处理并导出:
controller ="Pages"action ="Index"id =""
这与管理员路线的参数完全相同.
对于这样的路由问题,您应该尝试我的Route Debugger程序集(仅在测试中使用).它可以帮助找出这些类型的问题.
PS如果您要保护页面控制器,请确保使用[授权]属性.不要只依赖URL授权.