2016-11-19 84 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())); 

我希望这可以帮助他人。