В момента пиша услуга WCF, която щеизползвайте самоличността на ASP.NET, за да изпълните всички членства и свързаните с претенциите неща. (Тоест, удостоверяване, регистрация и всичко ще се извърши чрез извикване на този 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 на повикващия уебсайт.
Някаква идея как да се постигне това?
Отговори:
2 за отговор № 1Създайте обект за прехвърляне на данни (DTO), който има aдоговор за данни, който има същите свойства като клас ApplicationUser. Вие ще трябва да направите трансформация от вашия DTO към ApplicationUser, и по друг начин. Използвайте AutoMapper, за да направите трансформацията.
Лично аз не виждам никаква реална полза отпоставяне на сигурността зад уеб услугата на WCF. Мрежовият хоп и сериализацията / десериализацията при всяко оторизиране наистина ще задействат вашето уеб приложение.
Добра идея е да го разделите на друг слой, но този слой не трябва да бъде уеб услуга. Погледни SimpleSecurity, Той осигурява слой над ASP.NET Identity и демонстрира как да го персонализирате за потвърждение по имейл и друга подобрена функционалност. Вашата функционалност за упълномощаване не е добър елемент за разпространение, тъй като е ударен за всяка заявка от уеб клиента.