Рекомендации по интеграции ASP.NET Identity - существуют ли они?

Я использую идентификатор ASP.NET с новым веб-сайтом и, кажется, не так много (каких-либо?) примеров того, как это сделать развязанным образом. Я не хочу, чтобы мой класс домена DomainUser должен был наследовать от Microsoft.AspNet.Identity.EntityFramework.User, поэтому я создал класс, который выглядит следующим образом:

public class IdentityUser : User
{
    public virtual DomainUser DomainUser { get; private set; }
}

Я переместил DbSet, требуемый идентификатором ASP.NET, в тот же производный класс DbContext, что и мои модели домена как показано в этом ответе. Я связал IdentityUser однонаправленно с DomainUser с помощью Fluent API, например:

modelBuilder.Entity<IdentityUser>().HasRequired(iu => iu.DomainUser).WithRequiredPrincipal();

Это позволяет мне в основном отделить проблемы авторизации и аутентификации от поведения, определенного в классе DomainUser. Это лучше, чем объединение их в один класс, но это все еще кажется уродливым. У меня все еще есть ссылки на необходимые сборки ASP.NET Identity в моем проекте Domain. Я мог бы создать еще один проект, в котором содержался только мой класс IdentityUser и ссылка на мою сборку домена, чтобы разрешить свойство навигации, но это начинает чувствовать себя запутанным.

Я чувствую, что должен быть лучший, более чистый, более модульный способ связать Identity с доменом, не приводя к плотной связи.

Кто-нибудь придумал лучший способ справиться с этим? Я надеюсь привлечь внимание тех, кто участвует в проекте ASP.NET Identity (Hao Kung и др.), Чтобы обеспечить здесь направление.

Ответ 1

Дело в том, что если вы собираетесь наследовать от IdentityUser, сборки ASP.NET, связанные с идентификацией, подходят для поездки. Вы не можете отделить Identity от ASP.NET. Исходные примеры в этом вопросе не покупают вас - в большинстве случаев вам, вероятно, лучше всего наследовать от IdentityUser, если вы собираетесь использовать IdentityUser в своем проекте Domain.

Если проект вашего домена действительно должен быть свободен от связанных сборок ASP.NET, вы можете оставить классы, связанные с идентификацией, в своем веб-проекте и создать отдельную модель User в своем проекте домена, ссылку на две программные, как предложено here.