Дополнительное поле членства ASP.Net - PullRequest
1 голос
/ 05 июля 2011

Я запускаю новое приложение ASP.Net MVC 3 и надеюсь, что смогу использовать встроенный поставщик членства.

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

Простой подход состоит в том, чтобы настаивать на том, чтобы все пользователи использовали свои адреса электронной почты в качестве имени пользователя, чтобы каждый был уникальным и мог быть связан со своими соответствующими организациями. Проблема в том, что у некоторых пользователей нет адресов электронной почты, поэтому нет надежного способа обеспечить уникальные имена, и я не хочу, чтобы люди знали имена пользователей, уже используемые различными организациями. (Имена пользователей должны быть уникальными только для Организации, а не для всего приложения)

В идеале, я бы хотел, чтобы Пользователь вводил название своей организации в одном поле, затем свое имя пользователя в другом (а затем пароль!)

Так что мы могли бы получить логин Джейн из одной организации .....

Organization   Company1
Username       Jane
Password       ********

и тогда кто-то еще по имени Джейн может войти в систему из другой организации ..

Organization   Company2
Username       Jane
Password       ********

Итак, мой вопрос: каков наилучший способ изменить систему членства, чтобы учесть это дополнительное поле?

Ответы [ 4 ]

4 голосов
/ 05 июля 2011

Я бы хотел написать собственный членство в MembershipProvider, соответствующее требованиям.

http://msdn.microsoft.com/en-us/library/f1kyba5e.aspx

2 голосов
/ 05 июля 2011

Шаблон провайдера, используемый членством, разработан таким образом, чтобы вы могли его расширить.Вы можете наследовать от поставщика по умолчанию и от членства по умолчанию использовать класс, чтобы добавить необходимые поля.Это избавляет вас от необходимости писать поставщика с нуля.Как заметил @mare, есть потенциальные ловушки.

Я бы преодолел их, возможно, имея форму входа в систему, которая запрашивает организацию, имя пользователя и пароль, но за кулисами объединяет org & username и использует это каквнутреннее имя пользователя.

2 голосов
/ 05 июля 2011

Встроенный (по умолчанию ASP.NET) поставщик членства не предоставляет концепцию организации / компании / фирмы или отдела.Вам нужно будет создать свои собственные таблицы в базе данных для тех, у кого есть внешний ключ к таблице aspnet_users, чтобы иметь возможность хранить эту дополнительную информацию (я бы не стал менять таблицу aspnet_users по умолчанию, поскольку она может сделать ее несовместимой с текущейпоставщик по умолчанию или будущие).Затем вам нужно будет использовать поставщика по умолчанию для функций по умолчанию и создать класс Service для поддержки расширенных функций.Я знаю, я сделал это.Это сложно и грязно, требует времени, но это вполне выполнимо.

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

0 голосов
/ 18 сентября 2011

Я думаю, что в членстве есть встроенная опция.посмотрите в поле ПРИЛОЖЕНИЕ в таблице my_aspnet_users.ссылка здесь: http://msdn.microsoft.com/en-us/library/system.web.security.membership.applicationname.aspx

...