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

.net asp.net asp.net-identity entity-framework entity-framework-6

Вопрос

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

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

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

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

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

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

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

Принятый ответ

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

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


Популярные ответы

Здесь обсуждается развязка ASP.NET Identity . И вы можете найти примеры того, как это реализовано в проекте с открытым исходным кодом SimpleSecurity .




Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему