所以我一定错过了一些超级简单的东西,或者我不完全理解双因素身份验证应该如何适用于ASP.net Identity 2.0。
我的理解是,双因素身份验证应该像GoDaddy或谷歌一样工作;当您尝试在没有有效的第二因素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("sender@domain.com", message.Destination, message.Subject, message.Body);
smtpClient.Send(mail);
return Task.FromResult(0);
}
}
但是,当我登录时,不会发送任何电子邮件,也不会显示任何身份验证代码表单。
我进入管理视图(Views=>Manage=>Index)并取消对TwoFactor部分的注释。我重新登录,进入管理屏幕,并为帐户启用了双因素身份验证,但这并没有什么不同。
思考我错过了什么?
编辑
好的,看来我问题的关键可能与注册确认有关。双因素身份验证似乎只有在确认电子邮件后才起作用。否则,代码不会发送。因此,您需要在注册中启用电子邮件确认,或者在注册用户时设置EmailConfirmed = true
。
问题是必须将电子邮件标记为已确认,才能进行双因素身份验证。