所以我必須錯過一些超級簡單的東西,或者我不完全瞭解雙因素身份驗證如何適用於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
。
您的SMTP服務器在同一臺機器上配置是否正確? – MichaelS 2014-11-05 15:18:32
是的,使用Smtp4Dev來聆聽。可以在代碼的其他部分使用相同的方法發送電子郵件。 – Sam 2014-11-05 15:20:44
你見過這個: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