Hello,
In order to getting password reset work I need to register an IUserTokenProvider instance into DI.
Without it I get exception at following line:
var result = await _userManager.ResetPasswordAsync(user, token, password);
"No IUserTokenProvider named 'PasswordResetTokenProvider' is registered."
That makes sense so I tried to register it in the DI:
services.AddSingleton<IUserTokenProvider<User>, DataProtectorTokenProvider<User>>();
But the interface IUserTokenProvider
does not exists. Do you know how to solve this?
Thanks
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.