2013-08-05 24 views
1

目前的身份提供我有一個網站,它允許用戶進行認證的多種方式(如Facebook,微博,門窗等),每本提供了不同的身份名當用戶登錄英寸我需要找出誰提供了身份(ClaimsIdentity),並相應地爲用戶選擇唯一的ID以向用戶聲明集添加特定於應用程序的聲明。 我創建了一個表,將所有實體與用戶主配置文件表相關聯。該表包含身份提供者的名稱,由身份提供者提供的唯一ID以及來自個人資料表的唯一用戶ID。找出在Windows標識基礎

我的問題是如何找到身份提供者的名稱,當用戶登錄到使用這些登錄我的網站?問題是,如果用戶具有用於Facebook和Twitter的相同電子郵件地址,則無法在身份驗證管理器的身份驗證方法中使用的傳入主體中找到該信息。

回答

3

您通常使用的每個要求,你得到的IssuerOriginalIssuer性能。

如果使用e-mail作爲唯一標識符:

var u = this.User as IClaimsPrincipal; 

var c = (u.Identity as IClaimsIdentity) 
          .Claims 
          .First(c => c.ClaimType == ClaimTypes.Email); 

var issuer = c.Issuer; 
var originalIssuer = c.OriginalIssuer; 
+0

感謝歐亨尼奧。我在其他地方的評論中提過類似的問題。這也回答了這個問題。 – Hemant