Вопрос

Я использую ASP.NET Identity с новым веб-сайтом, и, похоже, не так уж много (каких-то?) примеров того, как это сделать отдельно.Мне не нужна модель моего домена 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 вот так:

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

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

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

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

Это было полезно?

Решение 2

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

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

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top