Подтвердить что ты не робот

Как реализовать поставщика членства ASP.NET в моей модели домена

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

Итак, я сижу здесь с моим карандашом и бумагой, рисовая линии для моей модели домена... И как я могу лучше всего использовать членство в ASP.Net, но расширить его, чтобы заполнить мои потребности?

Должен ли я создать класс, который наследуется от MemberhipUser, и расширять его своими собственными свойствами и методами (и сохранять это в отдельной таблице). Или я должен позволить MemberhipUser быть свойством в моем пользовательском объекте User/Client?

Каким будет хороший надежный способ сделать это?

4b9b3361

Ответ 1

Я подумал об этом, и есть два способа, которые кажутся подходящими (конечно, есть больше способов заставить его работать).

Пользовательский поставщик членства

Вы меняете поставщика членства, чтобы использовать свои собственные, и используете свой объект User для хранения всей информации.

Проблема с этим заключается в том, что он включает в себя много повторной реализации вещей, которые уже хорошо обрабатываются Asp.Net. Хорошо, что у вас есть единственный объект User со всеми подробностями.

Ссылка от пользователя-пользователя на пользователя

С помощью этого метода вы должны использовать исходный поставщик членства для обработки имени пользователя и пароля, но вы связываете свой собственный объект User с этим, например, с именем пользователя, используя, например, службу.

Это очень просто настроить, вам просто нужно создать сервис, который будет использоваться следующим образом:

string userName = "Jon Skeet";
User user = new UserManagementServices().GetUserByUserName(userName);

Ответ 2

Я закончил тем, что написал свой собственный членский провайдер, и теперь реализовал это в 3 отдельных решениях. Это очень просто и много, гораздо более элегантно, чем привязка пользователя к члену-члену (который я также пробовал).

Прочтите это...:

Создать пользовательский поставщик членства для безопасности веб-сайта ASP.NET

И если вы хотите узнать больше, просмотрите это видео (с исходным кодом).

Ответ 3

Я расширил MemberhipUser и создал свою собственную версию SqlMembershipProvider для сопоставления с моим существующим доменом и его работоспособностью в процессе производства.

MembershipUser - это, по существу, представление о моей таблице User. Мой расширенный класс MembershipUser включает свойства профиля/типа учетной записи вместо использования стандартной SqlProfileProvider системы, которая немного хрупкая.

Я не смог использовать существующие таблицы членства или sprocs, но написал свой собственный. Например, SqlMembershipProvider использует GUID как непрозрачный ключ, но в производственной системе используется простой старый int. Все даты - UTC и т.д. Тоже.

Все дополнительные функции пользователя доступны через домен пользователя, а не через методы членства.

НТН.

Ответ 4

В настоящее время я работаю над Microsoft ASP.NET 2.0 Memberhip API Extended из журнала CoDe Magazine, в котором объясняется, как расширить API членства написание обертки вокруг существующих классов. Главное преимущество заключается в том, что вы можете сохранить все функциональные возможности и не переписывать свои собственные, как при реализации пользовательского поставщика. Исходный код предоставляется.