2016-11-19 31 views
-2

我打算將這個屬性介紹給溫莎城堡。如何將Inject IDataProtectionProvider轉換爲Castle Windsor?

public static IDataProtectionProvider DataProtectionProvider { get; set; } 

因爲我在我的一個capes中使用了這個屬性。

private UserManagementContext _dbContext; 
    private readonly IDataProtectionProvider _provider; 
    private UserManager<IdentityUser> userManager; 
    private RoleManager<IdentityRole> roleManager; 

    public AuthenticationService(UserManagementContext dbContext,IDataProtectionProvider provider) 
    { 
     _dbContext = dbContext; 
     _provider = provider; 
     userManager = new UserManager<IdentityUser>(new UserStore<IdentityUser>(_dbContext)); 
     roleManager=new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(_dbContext)); 


     if (provider != null) 
     { 
      userManager.UserTokenProvider = 
       new DataProtectorTokenProvider<IdentityUser>(provider.Create("ASP.NET Identity")); 
     } 
    } 

我在This看到一個使用Ninject的教程。

如何在溫莎城堡重寫它?

回答

0

我找到了我的答案。我應該Initializa界面與所需的方法:

container.Register(Component.For<IDataProtectionProvider>().ImplementedBy<DpapiDataProtectionProvider>() 
      .UsingFactoryMethod(x => app.GetDataProtectionProvider())); 

我希望這可以幫助他人。