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

StackOverflow https://stackoverflow.com/questions/811137

Вопрос

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

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

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

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

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

Решение

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

Провайдер пользовательского членства

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

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

Ссылка от пользователя членства на вашего пользователя

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

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

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

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

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

Прочитайте это ...

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

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

Я расширил MembershipUser и создал свою собственную версию SqlMembershipProvider для сопоставления с моим существующим доменом, и она работает хорошо, сейчас находится в производстве.

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

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

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

ХТХ.

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

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