2015-11-10 43 views
1

我在使用.net身份時遇到了一些麻煩,因爲即使他們沒有相同的電子郵件,我也想鏈接多個社交帳戶。
我的理想工作流程是。我使用其中一個外部提供商登錄,然後在我的個人資料頁面上鍊接我的其他社交帳戶。
問題是,用戶身份類是用一封電子郵件修復的,我無法重寫用戶登錄類來添加電子郵件。
任何想法?
謝謝!Asp .net身份多次登錄不同的電子郵件

回答

0

默認情況下,通過OAuth/OpenId分配身份提供者不會發回用戶的電子郵件地址。因此,您必須爲您的Oauth/OpenId索賠請求添加一封電子郵件,或者提示用戶輸入其提供者的電子郵件地址。話雖如此,你不應該需要單個提供商提供的電子郵件,因爲通過OAuth/OpenId提供商識別用戶的方式是通過存儲在AspNetUserLogins表內的提供商密鑰。

asp身份的模板是你有一個用戶對象,它可以有一個電子郵件地址,然後通過在AspNetUserLogins表中存儲來自該提供者的唯一用戶ID來添加登錄提供者,例如facebook/gmail/etc與用戶關聯。所以默認情況下,你不應該有facebook/gmail/etc等郵件。

就我個人而言,我並沒有使用以下ASP.NET Identity Tutorial,但從快速瀏覽它看起來它可以幫助您瞭解如何使用身份提供商。

0

我擴展了Identity基類以在Login表上包含一個Email屬性,然後改進了索賠要求OAuth提供者索要Email。

每一個新的社交登錄我記錄使用的電子郵件,這使我們能夠自動合併同一電子郵件的帳戶。例如,向Google註冊然後忘記並在Facebook上註冊,我們可以節省您的時間,只需將FB登錄名添加到您的現有帳戶,然後離開您,沒有突然出現空白帳戶的噩夢。

我們沒有排序的是你的問題的另一半,有多個電子郵件和通行證。我想最懶惰的方式是將訪問者/ AspNetUser擴展爲父訪問者。然後,當用戶註冊第二封電子郵件/通行證時,他們將能夠訪問其合併帳戶。但是這個用例非常有限;我認爲將用戶限制在一個電子郵件/通行證,無限社交媒體以及合併帳戶,讓他們選擇他們希望使用最終帳戶的電子郵件會更好。

相關問題