我目前正在编写一个WCF服务,该服务将使用ASP.NET Identity来执行所有成员资格和声明相关的内容。 (即,通过调用此WCF来执行身份验证,注册和所有操作)
[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返回给调用网站。
知道如何实现这个目标吗?
答案 0 :(得分:2)
创建一个数据传输对象(DTO),其数据协定与ApplicationUser类具有相同的属性。您必须从DTO到ApplicationUser进行转换,反之亦然。使用AutoMapper进行转换。
就个人而言,我认为将安全性置于WCF Web服务之后并没有任何实际好处。每个授权的网络跃点和序列化/反序列化实际上都会破坏您的Web应用程序。
将它分成不同的层是个好主意,但该层不必是Web服务。看看SimpleSecurity。它提供了一个基于ASP.NET标识的层,并演示了如何自定义它以进行电子邮件确认和其他增强功能。您的授权功能不是一个好的分发项目,因为它来自Web客户端的每个请求。