簡體   English   中英

ASP.NET Core Identity GenerateTwoFactorTokenAsync 返回空字符串

[英]ASP.NET Core Identity GenerateTwoFactorTokenAsync returning empty string

應用程序是 .NET Core 2.1。

我正在我的站點(已經有基於應用程序的 tfa)中實現 SMS 雙重身份驗證,使用 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();
  }

提前致謝!

您可以使用await _userManager.GenerateTwoFactorTokenAsync(user, TokenOptions.DefaultPhoneProvider);

您可以從文檔中獲取詳細信息, 如何使用 sms 在 ASP.NET Core 中實現 2-factor auth

對於后來出現的任何人,我最終弄清楚了。 我剛剛搜索了 .NET 核心庫並找到了令牌提供程序PhoneNumberTokenProvider 只是將它傳遞給 generate 函數而不是 Authentication 函數,這似乎很好用。

現在我只需要弄清楚是否有一種內置方法可以保存用戶設置的 tfa 類型,或者我是否需要自己管理...

當您嘗試獲取身份驗證器應用程序令牌時,它不起作用並返回空字符串,您應該在代碼下使用來解決您的問題

await _userManager.ResetAuthenticatorKeyAsync(user);
var token = await _userManager.GetAuthenticatorKeyAsync(user);

我使用此代碼並正常工作,您可以在此鏈接中看到身份源中的兩個因素身份驗證

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM