2
我有2個過濾器我試圖申請使用Ninject的BindFilter<>
語法,並且它們正在成功應用於它們的依賴注入。問題出在這樣一個事實,即一個人將當前用戶分類並綁定那個人,並且在檢查維護授權時必須在第二個人之前運行 - 否則它不知道你指的是哪個用戶。Ninject授權與操作過濾器綁定順序
的濾波器,NinjectWebCommon.cs
結合看起來是這樣的:
kernel.BindFilter<CurrentUserFilter>(FilterScope.Global, 0).InRequestScope();
kernel.BindFilter<SetupRightsAttribute>(FilterScope.Controller, 1).WhenControllerType<MaintenanceController>().InRequestScope();
所以在維護控制器,我想第一個跑,然後第二位;在所有其他的只是第一個 - 這是有效的,第二個只用於瀏覽我的維護控制器中的東西。
的2個過濾器宣佈爲(排除不相關的細節)
public class CurrentUserFilter : IActionFilter
{
public void OnActionExecuting(ActionExecutingContext filterContext)
// implementation - breakpoint 1
}
public class SetupRightsAttribute : AuthorizeAttribute
{
protected override bool AuthorizeCore(HttpContextBase httpContext)
// implementation - breakpoint 2
}
我期待斷點1被擊中,然後斷點2,但由於某種原因它總是斷點2首 - 和因爲它不知道用戶在這一點上它告訴我我沒有權限。
我已經嘗試過FilterScope和順序設置的許多不同排列,即使以不同的順序綁定它們,但沒有任何作用......我做錯了什麼?
謝謝雷莫,我會將它改爲動作過濾器,然後......或者沿着這些線的東西:-P – DavidJones