MVC3 и управление пользователями

Я новичок в среде .NET, но имею большой опыт работы с другими средами на основе MVC, такими как среды Symfony и Zend.

У меня есть приложение, которое требует, чтобы участники семинара зарегистрировались, а затем выбрали семинары, в которых они хотели бы участвовать, поэтому у меня есть 3 модели, т.е. семинар, участник и регистрация, которые в основном имеют WorkshopID и ParticipantID.

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


person Masinde Muliro    schedule 03.09.2011    source источник


Ответы (2)


Если вы хотите связать своих участников с пользователями членства, лучше всего добавить столбец Guid (userId) в таблицу участников и связать его с первичным ключом в таблице aspnet_Users. Таким образом, вы связываете своего участника домена с пользователем ASP.NET.

person Jakub Konecki    schedule 03.09.2011

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

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

Roles.AddUserToRole(User.Identity.Name, "Workshop");
Roles.RemoveUserFromRole(User.Identity.Name, "Workshop");

Использование AspNetSqlRoleProvider с Sql Server более или менее стандартно, но есть некоторая конфигурация и связанные настройки.

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

Entity Framework можно использовать для быстрого формирования схемы базы данных из ваших моделей с помощью code-first.

person TheCodeKing    schedule 03.09.2011
comment
-1 - Я думаю, что смешивание безопасности (ролей) с доменом приложения (семинары) - плохое решение. Правильным было бы создать соответствующие таблицы базы данных (семинары, участники и компоновщик). - person Jakub Konecki; 03.09.2011
comment
Я бы согласился, но это зависит от намерения группировки - он вполне может искать решение, основанное на безопасности, поскольку вопрос конкретно касается членства, и это допустимый сценарий - я пытался предоставить быструю аналогию с .NET-скаффолдом для группировки пользователи. Если намерение для бизнес-домена, то нет, это не подходит. На самом деле, перечитывая вопрос, он действительно больше похож на проблему бизнес-домена. На самом деле я обновлю свой ответ. - person TheCodeKing; 03.09.2011
comment
Спасибо всем за то, что открыли мне глаза, я думаю, что подошел к этой проблеме с тем же менталитетом, как раньше реализовывал решение в других фреймворках. - person Masinde Muliro; 04.09.2011