2014-11-05 182 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

問題是電子郵件必須標記爲已確認雙因素身份驗證才能正常工作。

相關問題