Asp.Net Mvc Identity & Owin - верный способ двухфакторной аутентификации - PullRequest
0 голосов
/ 28 октября 2018

Я впервые использую двухфакторную аутентификацию, и у меня возникли проблемы. После нажатия кнопки проверки кода смс возникает ошибка. Я регистрируюсь и затем ввожу код смс: ошибка есть,

Предоставленный маркер защиты от подделки предназначен для пользователя, основанного на утверждениях, отличного от текущего пользователя.

Я использую

Microsoft.AspNet.Identity.Core v2.2.2

Microsoft.AspNet.Identity.Owin v2.2.2

Я пытаюсь использовать SMS-аутентификацию для каждого входа в систему. В моем контроллере порядок действий такой,

Для регистрации:

await UserManager.CheckUserDuplicate(user);
await UserManager.CreateAsync(user, model.Password);
await UserManager.AddToRoleAsync(user.Id, FrSettings.Settings.DefaultRole);
await UserManager.SetTwoFactorEnabledAsync(user.Id, true);

string code = await UserManager.GenerateChangePhoneNumberTokenAsync(user.Id, user.CepNo);

var message = new IdentityMessage
                            {
                                Destination = user.CepNo,
                                Body = SystemMessage.SmsMessage + code
                            };

                            SignInStatus resultSignIn = await SignInManager.PasswordSignInAsync(user.UserName, model.Password, false, false);
                            switch (resultSignIn)
                            {
                                case SignInStatus.Success:
                                    await UserManager.SmsService.SendAsync(message);
                                    break;
                                case SignInStatus.LockedOut:
                                    break;
                                case SignInStatus.RequiresVerification:
                                    await UserManager.SmsService.SendAsync(message);
                                    break;
                                case SignInStatus.Failure:
                                    break;
                                default:
                                    throw new ArgumentOutOfRangeException();
                            }

и для входа в систему:

await UserManager.ChangePhoneNumberAsync(User.Identity.GetUserId(), User.Name(), model.SmsCode);

Мой вход не завершен, но мой первый метод заключается в следующем. Пожалуйста, не стесняйтесь вносить предложения о входе в систему правильно и безопасно.

Если мне нужно больше информации о проекте, я могу обновить!

ОБНОВЛЕНИЕ ИНФОРМАЦИИ 1 :

После входа или регистрации я не использую редирект. Я использую ajax на одной странице для всех действий учетной записи.

...