1

어떤 이유로 인해 유효한 두 요소 인증 공급자에 EmailCode가 표시되지 않습니다. 그러나 PhoneCode는 제거하기 전까지는 아무 것도 나타나지 않았지만 이제는 아무 것도 나타나지 않습니다. 내가 디버깅하고 UserManager 아래에 나타나지만, 일부 이상한 이유로 GetValidTwoFactorProvidersAsync는 그것을 검색하지 않습니다. 메서드를 무시하고 수동으로 값을 검색하여 수동으로 추가하려고 시도했지만 Microsoft.AspNet.Identity.EmailTokenProvider가 존재하지 않는다는 오류 메시지가 throw됩니다. 왜 이것이 작동하지 않는지 설명하기가 어려울 정도입니다. IdentityconfigASP.NET ID 2 잘못됨 2 개 요소 공급자가 존재합니다

  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를 사용하거나 다른 방법으로 다시 설치하는 방법은 무엇입니까? –

+0

많은 작업을 해치지 않으면 불가능합니다. 기존 코드를 제거하고 다시 설치하면 덮어 씁니다. – Rasen244

답변

4

사용자에게 ConfirmedEmail이 있는지 확인하십시오. 데이터베이스에서 사용자를 찾아보고 EmailConfirmed 플래그가 설정되어 있는지 여부를 확인할 수 있습니다.

+0

그것은 실제로 문제였습니다. 왜 작동하지 않는지 알아 내려고 얼마나 많은 시간을 낭비했는지 믿을 수 없습니다. 적어도 나는 미래가 오류 메시지를 포함하고 이메일이 확인 될 때까지 두 가지 요소에 대한 액세스를 차단한다는 것을 알고 있습니다. 감사! – Rasen244

+0

누락 된 두 가지 요인의 전화 번호 공급자는 어떻습니까? 이유가 무엇일까요? – Legends

0

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

난 당신의 코드를 볼 수 없습니다 따라서 적절한 수정을 제안 할 수는 없지만 내가했던 모든 괜찮 갔다 내가 어떻게 당신을 말할 수 있기 때문이다. 나는이 링크를 사용하여이 방법으로 인증을 위해 응용 프로그램을 구성했을 때 그것은 나를 위해 매우 편리하고 쉬운 온 :

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