1

由於某種原因,EmailCode未在有效的雙因素身份驗證提供程序中顯示。然而,電話號碼直到我刪除它,現在什麼都沒有顯示出來。我已經調試過,它顯示在UserManager下,但由於某些奇怪的原因,GetValidTwoFactorProvidersAsync不檢索它。我已經嘗試通過繞過該方法手動添加它並手動檢索該值,但隨後會拋出Microsoft.AspNet.Identity.EmailTokenProvider不存在的錯誤消息。我無法解釋爲什麼這不起作用。ASP.NET身份2無效否雙因素提供程序存在

 public async Task<ActionResult> SendCode(string returnUrl) 
     { 
      var userId = await SignInManager.GetVerifiedUserIdAsync(); 
      if (userId == null) 
      { 
       return View("Error"); 
      } 
      var userFactors = await UserManager.GetValidTwoFactorProvidersAsync(userId); 
      var factorOptions = userFactors.Select(purpose => new SelectListItem { Text = purpose, Value = purpose }).ToList(); 
      return View(new SendCodeViewModel { Providers = factorOptions, ReturnUrl = returnUrl }); 
     } 

Identityconfig

  manager.RegisterTwoFactorProvider("EmailCode", new Microsoft.AspNet.Identity.EmailTokenProvider<SystemUser> 
       { 
        Subject = "SecurityCode", 
        BodyFormat = "Your security code is {0}" 
       }); 

      manager.EmailService = new EmailService(); 
      var dataProtectionProvider = options.DataProtectionProvider; 

      if (dataProtectionProvider != null) 
      { 
       manager.UserTokenProvider = 
        new DataProtectorTokenProvider<SystemUser>(
         dataProtectionProvider.Create("ASP.NET Identity")); 
      } 
      return manager; 
     } 
+0

只需卸載AspNet.Identity並使用Nuget Package Manager或其他任何方式重新安裝它,如何? – 2014-12-07 18:14:12

+0

如果不摧毀大量工作,這是不可能的。刪除並重新安裝將覆蓋現有代碼。 – Rasen244 2014-12-08 04:15:25

回答

4

確保您有一個用戶ConfirmedEmail。您可以在數據庫中查找用戶,並查看EmailConfirmed標誌以查看它是否已設置。

+0

確實是這個問題,我無法相信我花了多少時間試圖弄清楚爲什麼它不起作用。至少我知道將來會包含一條錯誤消息,並阻止對兩個因素的訪問,直到確認電子郵件。謝謝! – Rasen244 2015-01-27 14:44:29

+0

缺少雙因素電話號碼提供商呢?可能是什麼原因? – Legends 2016-04-14 17:57:40

0

既然不能看到你的代碼,因此無法提出適當的修復,但我可以告訴你我是如何做到了,都去好了。它來得非常方便和易於對我來說,當我試圖使用這些鏈接配置2路認證的應用程序:

http://www.asp.net/identity/overview/features-api/two-factor-authentication-using-sms-and-email-with-aspnet-identity

http://typecastexception.com/post/2014/04/20/ASPNET-MVC-and-Identity-20-Understanding-the-Basics.aspx

建議你嘗試一下,如果你還沒有。希望能幫助到你!

+0

你需要我發佈哪些部分。正如我上面所說,真的很奇怪,我可以讓電話代碼工作,但不是電子郵件代碼(這是我需要的)。這幾乎就像驗證電子郵件的兩個因素的代碼被損壞或刪除。正如我所說的,它在調試器中顯示爲雙因子方法,但在設置getvalidtwofactor方法時失敗。上面的兩個教程巧合的是我最初使用這兩個因素在開始階段工作,並沒有提供什麼可能導致失敗的線索。 – Rasen244 2014-12-08 12:44:51

相關問題