2014-11-25 63 views
4

Visual Studio-爲AspNet Identity生成一堆代碼,即LoginController和ManageController。在ManageController有下面的代碼:AspNet Identity使用同一電子郵件進行多個外部登錄

[HttpGet, Route("Manage/LinkLoginCallback")] 
    public async Task<ActionResult> LinkLoginCallback(string returnUrl) 
    { 
     ExternalLoginInfo loginInfo = await AuthenticationManager.GetExternalLoginInfoAsync(XsrfKey, User.Identity.GetUserId()); 

     ... 
     var result = await UserManager.AddLoginAsync(User.Identity.GetUserId(), loginInfo.Login); 

     if (result.Succeeded) 
     { 
      ... 
     } 
    } 

我這段代碼遇到的問題是,UserManager.AddLoginAsync()拋出一個異常時,添加了現有的電子郵件地址了外部登錄。然而,這似乎是一個有效的方案:

  1. 用戶與電子郵件簽署了谷歌加:[email protected]
  2. 用戶使用相同的電子郵件註冊Facebook。
  3. 現在,由於此例外情況,他們無法在應用程序的單個本地帳戶下「鏈接」這兩個帳戶。

如何處理這種情況並添加兩個帳戶?這樣做有什麼問題嗎?

回答

2

您可以禁用唯一的電子郵件的要求是這樣的:

manager.UserValidator = new UserValidator<ApplicationUser>(manager) 
     { 
      RequireUniqueEmail = false 
     }; 

哪裏manager是的UserManager類的一個實例。

相關問題