app是.net core 2.1。
我正在使用Twilio在我的网站(已经具有基于应用的TFA)中实现SMS两因素AUTH,并且一切都准备就绪,而无法生成令牌的小问题。
首先,当用户输入其手机号码以设置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();
}
预先感谢!
您可以使用await _userManager.GenerateTwoFactorTokenAsync(user, TokenOptions.DefaultPhoneProvider);
您可以从文档中获取详细信息,如何使用SMS
对于以后出现的任何人,我最终弄清楚了。我刚刚搜索了.NET Core库,并找到了令牌提供商PhoneNumberTokenProvider
。刚将其传递到生成函数而不是身份验证的功能中,这似乎效果很好。
现在,我只需要弄清楚是否有一种内置方法来保存用户设置哪种TFA,或者我是否需要我自己管理...
它不起作用并在尝试获取Authenticator应用程序令牌时返回空字符串您应该在代码下使用您的问题
await _userManager.ResetAuthenticatorKeyAsync(user);
var token = await _userManager.GetAuthenticatorKeyAsync(user);
我使用此代码并正确工作您可以在此链接中的身份源中看到两个因素身份验证