Asp.net
定義條件路由
我一直在尋找類似的東西,但沒有運氣。我想建構一個對相同 url 使用不同控制器的應用程序。基本思想是,如果使用者以管理員身份登錄,他使用可以說管理員控制器,如果使用者只是使用者,他使用使用者控制器。這只是一個例子,基本上我想要一個函式來決定控制器路由採用什麼。
謝謝大家。任何幫助是極大的讚賞。
PS 用途:管理員有不同的 UI 和選項,輸出擷取,關注點分離
你需要創建一個RouteConstraint來檢查使用者的角色,如下:
using System; using System.Web; using System.Web.Routing; namespace Examples.Extensions { public class MustBeAdmin : IRouteConstraint { public MustBeAdmin() { } public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection) { // return true if user is in Admin role return httpContext.User.IsInRole("Admin"); } } }然後,在您的預設路由之前,為 Admin 角色聲明一個路由,如下所示:
routes.MapRoute( "Admins", // Route name "{controller}/{action}/{id}", // URL with parameters new { controller = "Admin", action = "Index", id = UrlParameter.Optional }, // Parameter default new { controller = new MustBeAdmin() } // our constraint );輔導員本