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;
}
既然不能看到你的代码,因此无法提出适当的修复,但我可以告诉你我是如何做到了,都去好了。它来得非常方便和易于对我来说,当我试图使用这些链接配置2路认证的应用程序:
建议你尝试一下,如果你还没有。希望能帮助到你!
你需要我发布哪些部分。正如我上面所说,真的很奇怪,我可以让电话代码工作,但不是电子邮件代码(这是我需要的)。这几乎就像验证电子邮件的两个因素的代码被损坏或删除。正如我所说的,它在调试器中显示为双因子方法,但在设置getvalidtwofactor方法时失败。上面的两个教程巧合的是我最初使用这两个因素在开始阶段工作,并没有提供什么可能导致失败的线索。 – Rasen244 2014-12-08 12:44:51
只需卸载AspNet.Identity并使用Nuget Package Manager或其他任何方式重新安装它,如何? – 2014-12-07 18:14:12
如果不摧毁大量工作,这是不可能的。删除并重新安装将覆盖现有代码。 – Rasen244 2014-12-08 04:15:25