Связывание данных с пользователем - PullRequest
2 голосов
/ 06 сентября 2011

Для моего первого приложения ASP.NET MVC 3 я использую таблицы aspnet_Users и aspnet_Roles, чтобы обеспечить аутентификацию для моих пользователей и для нескольких ролей.Это, кажется, работает довольно хорошо.Кроме того, я хочу связать вошедшего в систему пользователя и строки в разных таблицах.

В качестве конкретного примера у меня есть таблица Recipes, в которой есть столбцы, специфичные для рецептов (имя, даты, атрибуты), а также столбец UserID.Этот столбец UserID в настоящее время является внешним ключом для таблицы Users в моем IceCreamDB (НЕ для таблицы aspnet_Users в aspnetdb), которая содержит различную доменную информацию о пользователях системы.Итак, достаточно просто создать запрос, который извлекает все рецепты Мэтта, создав пользователя в моей таблице «Пользователи» с именем Matt, у которого есть некоторый целочисленный UserId, а затем используйте этот UserId при создании и обновлении таблицы Recipes.Отлично.

Чтобы связать вошедшего в систему пользователя «itsmatt» (из таблицы aspnet_Users) с моей пользовательской таблицей IceCreamDB UserId для Matt, в таблице IceCreamDB Users есть столбец Guid, который заполняется идентификатором aspnet_Users(это Guid) для входа в систему.

Таблица пользователей IceCreamDB:

 UserId     1               // primary key used as FK for other tables 
 UserName   Matt
 Phone      555-1212
 Department Product Development
 Building   2-A
 Office     221
 UserGuid   7fc75a6c-7e32-43f3-be8c-be0122bf54cb // Guid from aspnetdb User table

И это работает нормально - в рамках процесса регистрации пользователей я создаю aspnet_User, устанавливаю любые роли (например, «Администраторы», «Владельцы»)."," Производство "), а затем создайте запись пользователя в таблице пользователей IceCreamDB, скопировав Guid в новую строку.Это позволяет мне зайти на сайт и посмотреть мои рецепты или мои заказы.

Но я чувствую, что я сам приготовил это решение, и, вероятно, есть лучший, другой подход к этому.Я хотел бы получить некоторые рекомендации по этому вопросу.

Ответы [ 2 ]

2 голосов
/ 06 сентября 2011

Это нормально для меня.Поставщик Membership также работает наоборот - у него есть свойство provideruserkey, хранящееся в БД, которое будет содержать значение UserId 1 в таблице aspnet_users.

Так что, если это хорошо для Microsoft, оно должнохорошо для вашего сценария: -)

HTH.

2 голосов
/ 06 сентября 2011

Насколько я знаю, это довольно распространенное решение.Два других, о которых я знаю, используют aspnet_Profile для простых настроек или редактируют таблицу aspnet_Users, что не является хорошим решением, потому что если у вас будет больше приложений (aspnet_Applications), использующих тот же aspnet_Users в итоге у вас есть поля в этой таблице, которые одно приложение может использовать (не обнуляемое), а другое нет.

В этом уроке они в основном делают одно и то же.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...