Asp.net-Mvc
針對 ASP.NET MVC 3 中的控制器和操作名稱授權目前使用者
我需要在 ASP.NET MVC 3 中創建自定義授權。在應用程序內部,授權在 5 個表中定義:使用者、組、使用者組、權限、組權限。一個使用者可以屬於多個組,每個權限也可以分配給多個組。每個控制器操作都分配有一個 RightID。
內置授權無法適應此設置,因此我嘗試創建自定義 AuthorizeAttribute。覆蓋 AuthorizeCore 時,我意識到我無權訪問控制器名稱和操作名稱。
我可以以某種方式要求路由器解析 AuthorizeCore 中的 Request.RawUrl 以獲取控制器和操作名稱嗎?還是有其他方法可以做我想做的事?
protected override bool AuthorizeCore(HttpContextBase httpContext) { var routeData = httpContext.Request.RequestContext.RouteData; var controller = routeData.GetRequiredString("controller"); var action = routeData.GetRequiredString("action"); ... }
您可以使用可以訪問所有 HttpContex 的操作過濾器來實現此目的。
public class MyAuthorizeAttribute : ActionFilterAttribute, IAuthorizationFilter { #region Implementation of IAuthorizationFilter public void OnAuthorization(AuthorizationContext filterContext) { // ... implementation // filterContext.Controller is the controller // filterContext.RouteData is all the route data