MVC Hangfire授权对象



我想注入到Hangfire AuthorizationFilter我的自定义服务,并对它做一些事情,我面临的问题是,我的服务总是空的。

自己的启动类:

 public class Startup
{
    public void Configuration(IAppBuilder app )
    {
        GlobalConfiguration.Configuration
            .UseSqlServerStorage("SomeContext")
            .UseNinjectActivator(new Bootstrapper().Kernel);
        app.UseHangfireDashboard("/hangfire", new DashboardOptions { AuthorizationFilters = new[] { new RestrictiveAuthorizationFilter() } });
        app.UseHangfireServer();
    }
}

自定义过滤器:

public class RestrictiveAuthorizationFilter : IAuthorizationFilter
{
    [Inject]
    public IUserService _userService { get; set; }
    public bool Authorize(IDictionary<string, object> owinEnvironment)
    {
      //do something with _userService but it is always null
      return true;
    }
}

Ninject kernel:

 private static void RegisterServices(IKernel kernel)
    {
        kernel.Bind(x => { x.From(typeof(BookService).Assembly).SelectAllClasses().EndingWith("Service").BindDefaultInterface(); });
        kernel.Bind<LibraryDBContext>().ToSelf().InRequestScope();
        kernel.Bind<IBackgroundJobClient>().To<BackgroundJobClient>();
    }      

我没有看到我的错误,你能帮我吗?

您可以将内核作为参数传递给RestrictiveAuthorizationFilter构造函数,并请求IUserService。

public class RestrictiveAuthorizationFilter : IAuthorizationFilter 
{   
    public IUserService _userService { get; set; }
    public RestrictiveAuthorizationFilter(IKernel kernel)
    {
        _userService = kernel.Get<IUserService>()
    }
    public bool Authorize(IDictionary<string, object> owinEnvironment)
    {
      //do something with _userService but it is always null
      return true;
    }
}

相关内容

最新更新