1
我使用安裝在App_Start文件夾中的標準NinjectMVC3引導程序。使用Ninject和全局過濾器的依賴注入:IAuthorizationFilter
我的應用程序類的樣子:
public class MvcApplication : HttpApplication
{
static void RegisterRoutes(RouteCollection routes)
{
// ... routes here ...
}
public void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
}
static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
// empty
}
}
我只以下臨時用戶在NinjectMVC3競價規則:
Bind<IAccountsRepository>().To<AccountsRepository>();
this.BindFilter<GlobalAuthFilter>(FilterScope.Global, 0);
我的全局過濾:
public class GlobalAuthFilter : IAuthorizationFilter
{
readonly IAccountsRepository _accountsRepository;
public GlobalAuthFilter(IAccountsRepository accountsRepository)
{
_accountsRepository = accountsRepository;
}
public void OnAuthorization(AuthorizationContext context)
{
// Code here never reached. Why? What's wrong?
}
}
有任何控制器在我的應用程序。我想爲每個控制器的每個動作調用調用OnAuthorization。
但我的代碼dosn't工作。謝謝。
是的,我解放軍在RegisterServices中綁定綁定規則。但它不起作用。 – 2012-01-31 12:22:44
@JeanLouis,我剛剛測試過這段代碼,它工作得很好。步驟:1.創建一個新的ASP.NET MVC 3應用程序。 2.安裝Ninject.MVC3 NuGet包。 3.定義'IAccountsRepository','AccountsRepository'和'GlobalAuthFilter'類型。 4.將我在答案中顯示的代碼放入RegisterServices方法中。 5.運行應用程序。 6.執行OnAuthorization。 – 2012-01-31 12:26:29
我已經更新了我的答案,以說明Ninject模塊的示例。 – 2012-01-31 12:28:23