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做到这一点?

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保留单独的方法,因为它仅在注册新用户时使用。