我正在尝试使用UserManager和GenerateChangePhoneNumberTokenAsync方法恢复密码。 在尝试通过ChangePhoneNumberAsync确认令牌后,但是每次我收到有关错误代码的错误。
我尝试了不同的条件,每次都遇到相同的错误。
生成令牌
var token = await _userManager.GenerateChangePhoneNumberTokenAsync(user, model.Username);
确认令牌
var verified = await _userManager.ChangePhoneNumberAsync(user, model.Phone, model.Token);
Startup.cs
services.AddIdentity<ApplicationUser, IdentityRole>(config =>
{
config.SignIn.RequireConfirmedEmail = true;
config.SignIn.RequireConfirmedPhoneNumber = true;
config.Tokens.ChangePhoneNumberTokenProvider = "Phone";
})
电话和用户名相同。
var user = new ApplicationUser
{
Email = $"{_templateCustomerEmail}{(_context.Users.Count() + 1)}@{_appSettings.Domain}",
DateSignUp = DateTime.UtcNow,
FullName = model.FullName,
Id = Guid.NewGuid().ToString(),
PhoneNumber = model.Username,
EmailConfirmed = true,
PhoneNumberConfirmed = false,
UserName = model.Username
};
我期望这些东西真的很容易设置。不幸的是,面对一个愚蠢的问题。 也许问题出在方法名称或其他名称上。
答案 0 :(得分:0)
GenerateChangePhoneNumberTokenAsync
接收用户和电话号码。您要为其提供用户名和用户名,因此,当您尝试对其进行更改(确认令牌)时,您正试图将电话号码与不匹配的用户名进行匹配,从而产生错误。