2014-11-05 181 views
3

所以我必须错过一些超级简单的东西,或者我不完全了解双因素身份验证如何适用于ASP.net Identity 2.0。如何使用ASP.net Identity 2.0设置双因素身份验证?

我的理解是,双因素身份验证应该像GoDaddy或Google一样工作;当您尝试从没有有效的第二因素cookie的计算机登录时,电子邮件或短信将通过授权码发送,您将看到第二张表单以输入授权码,以完成登录过程。

所有的代码似乎是存在于新的MVC 5项目,除了我不得不实现对电子邮件服务的SendAsync功能:

public class EmailService : IIdentityMessageService 
{ 
    public Task SendAsync(IdentityMessage message) 
    { 
     // Plug in your email service here to send an email. 
     SmtpClient smtpClient = new SmtpClient("127.0.0.1", 25); 
     MailMessage mail = new MailMessage("[email protected]", message.Destination, message.Subject, message.Body); 
     smtpClient.Send(mail); 
     return Task.FromResult(0); 
    } 
} 

然而,当我登录时,不发送电子邮件并且不显示认证码表单。

我进入了管理视图(Views => Manage => Index),并取消了TwoFactor部分的注释。我重新登录,进入管理界面,并为帐户启用双因素身份验证,但没有什么区别。

关于我错过了什么的想法?


编辑

好了,看来我的问题的症结可能与报名确认。双因素认证只有在电子邮件确认后才起作用。否则,代码不会发送。因此,您需要在注册中启用电子邮件确认,或者在注册用户时设置EmailConfirmed = true

+0

您的SMTP服务器在同一台机器上配置是否正确? – MichaelS 2014-11-05 15:18:32

+0

是的,使用Smtp4Dev来聆听。可以在代码的其他部分使用相同的方法发送电子邮件。 – Sam 2014-11-05 15:20:44

+0

你见过这个:http://www.asp.net/identity/overview/features-api/two-factor-authentication-using-sms-and-email-with-aspnet-identity? – trailmax 2014-11-05 22:42:17

回答

1

问题是电子邮件必须标记为已确认双因素身份验证才能正常工作。

相关问题