2014-04-01 139 views
1

我目前正在編寫一個WCF服務,它將使用ASP.NET標識來執行所有的成員資格和聲明相關的東西。 (即,認證,登記,以及所有通過調用此WCF進行)ASP.NET MVC 5 - WCF中的IdentityUser?

[DataContract(IsReference=true)] 
public class ApplicationUser: IdentityUser 
{ 
    [DataMember] 
    public string FirstName { get; set; } 
    [DataMember] 
    public string LastName { get; set; } 
    [DataMember] 
    public string Email { get; set; } 
} 

的問題是,「IdentityUser」是Microsoft.Aspnet.Identity.Core.Entityframework組件的一類,而這種類未標記DataContract屬性。 我正在編寫我的 WCF服務中的操作,以將ApplicationUser返回到調用網站。

任何想法如何實現這一目標?

+1

創建一個具有與ApplicationUser類相同屬性的數據約定的數據傳輸對象(DTO)。您將不得不從DTO到ApplicationUser進行轉換,反之亦然。使用AutoMapper進行轉換。就我個人而言,我沒有看到將安全性置於WCF Web服務背後的任何真正好處。每個授權上的網絡跳轉和序列化/反序列化都會影響您的Web應用程序。 –

+0

你的意思是說,我們需要保持MVC網站本身的ASP.NET身份相關代碼?我的意思是,它使用了與數據庫緊密集成的ApplicationDbContext,這就是爲什麼我想將該代碼移到WCF以關注分離。不知道這是否是一個好方法。 – Nirman

+1

將它分成不同的層是一個好主意,但該層不一定是Web服務。看看SimpleSecurity https://simplesecurity.codeplex.com/。它提供了一個ASP.NET身份驗證層,並演示瞭如何自定義電子郵件確認和其他增強功能。您的授權功能不是一個好的分發項目,因爲它受到來自Web客戶端的每個請求的影響。 –

回答

1

創建一個具有與ApplicationUser類相同屬性的數據約定的數據傳輸對象(DTO)。您將不得不從DTO到ApplicationUser進行轉換,反之亦然。使用AutoMapper進行轉換。

就我個人而言,我看不出任何將安全性置於WCF Web服務背後的真正好處。每個授權上的網絡跳轉和序列化/反序列化都會影響您的Web應用程序。

將它分成不同的層是一個好主意,但該層不一定是Web服務。看看SimpleSecurity。它提供了一個ASP.NET身份驗證層,並演示瞭如何自定義電子郵件確認和其他增強功能。您的授權功能不是一個好的分發項目,因爲它受到來自Web客戶端的每個請求的影響。