ASP.NET身份2无效否双因素提供程序存在

问题描述:

由于某种原因,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

确保您有一个用户ConfirmedEmail。您可以在数据库中查找用户,并查看EmailConfirmed标志以查看它是否已设置。

+0

确实是这个问题,我无法相信我花了多少时间试图弄清楚为什么它不起作用。至少我知道将来会包含一条错误消息,并阻止对两个因素的访问,直到确认电子邮件。谢谢! – Rasen244 2015-01-27 14:44:29

+0

缺少双因素电话号码提供商呢?可能是什么原因? – Legends 2016-04-14 17:57:40

既然不能看到你的代码,因此无法提出适当的修复,但我可以告诉你我是如何做到了,都去好了。它来得非常方便和易于对我来说,当我试图使用这些链接配置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