Asp.net-Mvc

針對 ASP.NET MVC 3 中的控制器和操作名稱授權目前使用者

  • April 8, 2011

我需要在 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

引用自:https://stackoverflow.com/questions/5594726