Ninject:绑定身份用户管理器
本文关键字:用户 管理器 身份 绑定 Ninject | 更新日期: 2023-09-27 18:32:14
我的AuthenticationController遇到了问题,我使用Identity 2.0。任务很简单,但是关于 Ninject 及其绑定,我有些不明白。
我想将UserManager绑定到UserStore和DBContext,但我不知道该怎么做。此外,更重要的问题是我必须在哪个范围内为 UserManager 和 UserStore 设置绑定。
另外,我的身份验证控制器中有此方法:
private void UserValidator(UserManager<User> usermanager)
{
usermanager.UserValidator = new UserValidator<User>(usermanager)
{
AllowOnlyAlphanumericUserNames = true
};
}
我不想创建新的 UserValidator 并在其他方法(或在构造函数中)调用此方法,而是在创建此方法时将此方法与我的 UserManager 绑定。我如何使用Ninject做到这一点?
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保留单独的方法,因为它仅在注册新用户时使用。