Приложение - это .NET Core 2.1.
Я внедряю двухфакторную аутентификацию SMS на своем сайте (уже есть tfa на основе приложений), использую Twilio, и все готово к работе, с незначительной проблемойиз-за невозможности сгенерировать токен.
Следующий код - это то, что я вызываю, когда пользователь вводит свой номер мобильного телефона, чтобы сначала установить TFA.Просто генерируй код и отправляй ему текстовые сообщения.Но вызов _userManager.GenerateTwoFactorTokenAsync
возвращает пустую строку.Что, глядя на исходный код, трудно сделать.Полезно.
Я надеялся использовать это, чтобы я мог использовать тот же процесс проверки, который я уже использовал для моего tfa на основе приложения.Так какую функцию я должен использовать, чтобы генерировать токены tfa для отправки пользователям?Или я подхожу к этому неправильно?
РЕДАКТИРОВАТЬ: просто из моего собственного копания, может быть, я должен использовать токен изменения номера телефона для этой начальной настройки.Но тогда возникает вопрос, что я должен использовать для реального процесса tfa во время входа в систему?
[Authorize]
[HttpPost("send-sms")]
public async Task<IActionResult> SendSms(SMSModel input)
{
var user = await _userManager.GetUserAsync(User);
if (String.IsNullOrWhiteSpace(_smsOptions.Sid) || String.IsNullOrWhiteSpace(_smsOptions.Token)) {
ModelState.AddModelError("phoneNumber", "SMS provider not set up.");
return BadRequest(ModelState);
}
var code = await _userManager.GenerateTwoFactorTokenAsync(user, _userManager.Options.Tokens.AuthenticatorTokenProvider);
var message = "Your one-time verification code is: " + code;
TwilioClient.Init(_smsOptions.Sid, _smsOptions.Token);
try {
var result = await MessageResource.CreateAsync(
to: new PhoneNumber(input.phone),
from: new PhoneNumber(_smsOptions.From),
body: message
);
} catch (Exception e) {
ModelState.AddModelError("phoneNumber", e.Message);
return BadRequest(ModelState);
}
return Ok();
}
Заранее спасибо!