ASP.NET Identity 2 Invalid no Two factor Provider Exists 存在

标签 asp.net asp.net-mvc asp.net-mvc-5 asp.net-identity-2 two-factor-authentication

出于某种原因,EmailCode 未出现在有效的双因素身份验证提供程序中。然而,PhoneCode 在我将其删除之前一直有效,现在什么都没有显示。我已经调试,它显示在 UserManager 下,但出于某种奇怪的原因,GetValidTwoFactorProvidersAsync 没有检索到它。我已经尝试通过绕过该方法并手动检索值来手动添加它,但随后它会抛出 Microsoft.AspNet.Identity.EmailTokenProvider 不存在的错误消息。我无法解释为什么这不起作用。

        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 });
        }

身份配置

            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;
        }

最佳答案

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

关于ASP.NET Identity 2 Invalid no Two factor Provider Exists 存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27345957/

相关文章:

javascript - 无法在 jQuery Datatable 中列出详细数据

c# - AsP.Net MVC 5 如何在 View 中调用函数

c# - 如何在基本的 MVC5.1 网站中正确注册 AutoFac?

asp.net - Windows Server 2012 中的 .svc 文件以 "405 Method not Allowed"响应

javascript - 从 UpdatePanel 内的用户控件注入(inject) javascript

asp.net-mvc - 为什么我的 MVC 项目在安装 WebMatrix 2 Beta 后在生产服务器上抛出异常?

c# - 检查用户输入是否以两种可能性之一开始

c# - 在 nodatime 上添加两个句点

c# - SignalR 中心和 Identity.Claims

c# - Controller 返回FileStreamResult时如何清除\清除模型状态错误?