Почему ChangePhoneNumber всегда возвращает неправильный код? - PullRequest
0 голосов
/ 01 мая 2019

Я пытаюсь восстановить пароль с помощью метода 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 голосов
/ 01 мая 2019

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

GenerateChangePhoneNumberTokenAsync берет пользователя и номер телефона. Вы даете ему имя пользователя и имя пользователя, поэтому, когда вы пытаетесь изменить его (подтвердите токен), вы пытаетесь сопоставить номер телефона с именем пользователя, которое не совпадает, поэтому выдает ошибку.

...