为什么ChangePhoneNumber总是返回错误的代码?

时间:2019-04-30 22:10:42

标签: c# asp.net .net-core asp.net-identity

我正在尝试使用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
            };

我期望这些东西真的很容易设置。不幸的是,面对一个愚蠢的问题。 也许问题出在方法名称或其他名称上。

1 个答案:

答案 0 :(得分:0)

https://docs.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.identity.usermanager-1.generatechangephonenumbertokenasync?view=aspnetcore-2.2

GenerateChangePhoneNumberTokenAsync接收用户和电话号码。您要为其提供用户名和用户名,因此,当您尝试对其进行更改(确认令牌)时,您正试图将电话号码与不匹配的用户名进行匹配,从而产生错误。

相关问题