Password reset token provider in ASP.NET core - IUserTokenProvider not found
You can specify one of the built in providers;
services.AddIdentity<User, Role>(options =>{
options.Tokens.PasswordResetTokenProvider = TokenOptions.DefaultEmailProvider;
})
.AddDefaultTokenProviders();
Or create your own IUserTwoFactorTokenProvider and register it like so;
services.AddIdentity<User, Role>(options => {
options.Tokens.PasswordResetTokenProvider = nameof(MyTokenProvider);
})
.AddTokenProvider<MyTokenProvider>(nameof(MyTokenProvider));
add or correct following lines in startup.cs:
services.AddIdentity<User, UserRole>()
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();
you can found more description here
I'm not sure if it's workaround or normal approach, but the IUserTwoFactorTokenProvider
interface seems to be a right way. IUserTokenProvider appears to no longer exists.
Figured out that I have to register the provider manually in the identity:
services.AddIdentity<User, Role>(options =>
{
...
options.Tokens.ProviderMap.Add("Default", new TokenProviderDescriptor(typeof(IUserTwoFactorTokenProvider<User>)));
})
And the optional configuration in ConfigureServices
:
services.Configure<DataProtectionTokenProviderOptions>(o =>
{
o.Name = "Default";
o.TokenLifespan = TimeSpan.FromHours(1);
});
And the password reset / email validation tokens are working now.
PS: Opened an issue for clarification