应用程序是.NET Core 2.1。
我正在使用 Twilio 在我的网站中实现 SMS 双因素身份验证(已经有基于应用程序的 tfa),一切都准备就绪,但存在无法生成令牌的小问题。
当用户首先输入手机号码来设置 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 …Run Code Online (Sandbox Code Playgroud)