标签: usertokenprovider

没有注册名为“默认”的IUserTokenProvider

我在使用ASPNET Core API进行身份验证。一切正常,除了事实是,每当我尝试通过GeneratePasswordResetToken更改密码时,都会抱怨没有IUserTokenprovider 。我们收到类似“未注册名为'Default'的IUserTokenProvider的错误。

我们为不同的客户使用不同的数据库,因此我们想提供一个到上下文的连接字符串,以便每个调用都能够引用不同的数据库。据我了解,这在启动时是不可能的。然后,我们尝试在DbContext和有效的UserManager中执行此操作。

现在,我们的代码如下所示(仅相关部分):

启动

 public IServiceProvider ConfigureServices(IServiceCollection services)
    {
        services.AddIdentity<ApplicationUser, IdentityRole>(options => 
        {
            options.Tokens.ProviderMap.Add("Default", new TokenProviderDescriptor(typeof(IUserTwoFactorTokenProvider<ApplicationUser>)));
        })
            .AddDefaultTokenProviders();
     }
Run Code Online (Sandbox Code Playgroud)

DbContext

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
private static string _connectionString

    public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options, string connectionString) : base (options)
    {
        _connectionString = connectionString;

    }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseSqlServer(_connectionString);
        base.OnConfiguring(optionsBuilder);
    }
}
Run Code Online (Sandbox Code Playgroud)

用户管理器

public class ApplicationUserManager : UserManager<ApplicationUser>
{
public ApplicationUserManager(string connectionString, ApplicationDbContext context) : base(new UserStore<ApplicationUser>(context), null, new PasswordHasher<ApplicationUser>(), null, null, null, new …
Run Code Online (Sandbox Code Playgroud)

c# identity change-password asp.net-core usertokenprovider

6
推荐指数
0
解决办法
529
查看次数