我的AuthenticationController遇到了问题,我使用Identity 2.0。 任务很简单,但是我无法理解Ninject及其绑定。
我想将UserManager绑定到UserStore和DBContext,但我无法弄清楚如何做到这一点。 此外,更重要的问题是我必须为哪个范围设置UserManager和UserStore的绑定。
另外,我在AuthenticationController中有这个方法:
private void UserValidator(UserManager<User> usermanager)
{
usermanager.UserValidator = new UserValidator<User>(usermanager)
{
AllowOnlyAlphanumericUserNames = true
};
}
我不想创建新的UserValidator并在其他方法(或构造函数)中调用此方法,而是在创建时将此方法与我的UserManager绑定。我怎么能用Ninject做到这一点?
答案 0 :(得分:4)
UserManager,UserStore和DBContext正在创建依赖链,因此您必须键入类似的内容
kernel.Bind<IDBContext>().To<DBContext>().InRequestScope(); //It's good practice to use interface
kernel.Bind<DBContext>().ToSelf().InRequestScope(); //You can also do it this way
kernel.Bind<IUserStore<User>>().To<UserStore<User>>()
.InRequestScope()
.WithConstructorArgument("context", kernel.Get<IDBContext>());
kernel.Bind<UserManager<User>>().ToSelf()
.InRequestScope();
我认为最好继续使用UserValidator的单独方法,因为它仅在注册新用户时使用。