Как связать пользователей членства / роли ASP.NET с таблицами в БД? - PullRequest
4 голосов
/ 01 марта 2010

Я собираюсь использовать проверку подлинности с помощью форм, но я хочу иметь возможность связать пользователей asp.net с некоторыми таблицами в БД, например

Если у меня есть класс и студенты (в качестве ролей), у меня будет стол для класса.

Я планирую поместить в таблицу Users, содержащую простой int userid и имя пользователя ASP.NET, и указать userid везде, где я хочу связать пользователей.

Звучит хорошо? Есть ли другие варианты моделирования этого? это звучит немного запутанно?

Ответы [ 3 ]

4 голосов
/ 01 марта 2010

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

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

1 голос
/ 01 марта 2010

Если вы собираетесь использовать членство в ASP.NET, вы должны создать пользователей с классами членства ASP.Net и таблицами базы данных. Это создаст пользователя в dbo.aspnet_Membership с соответствующими ролями, установленными для этого пользователя. После успешной вставки в эту таблицу вы можете получить UserId из dbo. aspnet_Membership таблица.

В таблице ВАШИ пользователи создайте таблицу с внутренним (автоинкрементным) ID, а также создайте в вашей таблице поле memberID (а не имя пользователя) типа uniqueidentifier с именем say, membersID . Здесь вы можете сохранить значение из таблицы aspnet_Membership , чтобы связать их вместе. Вы также должны поместить отношение внешнего ключа в поле membersID для обеспечения ссылочной целостности.

РЕДАКТИРОВАТЬ: Просто чтобы уточнить с другими сообщениями, идентификатор имеет тип GUID в вашем коде ASP.NET и типа uniqueidentifier в вашем SQLServer базы данных.

0 голосов
/ 01 марта 2010

Мы сделали это для системы, где мы встроили аутентификацию форм в систему, использующую другую систему аутентификации. Мы добавили столбец в нашу существующую таблицу учетных записей пользователей. Мы добавили столбец GUID, поскольку именно это используют таблицы aspnet_xxxx, и заполнили его GUID из таблиц aspnet. Затем мы завернули создание нашей записи в нашей таблице в транзакцию, зависящую от успешности создания учетной записи с использованием вызовов членства asp.net. Очень важно убедиться, что вы синхронизируете таблицы вместе с транзакцией или чем-то подобным, чтобы у вас не было записей ни в одной системе, ни в другой.

Я не уверен на 100%, но я думаю, что имена пользователей могут измениться, поэтому вы не должны использовать это для связи своих систем. Используйте GUID.

Надеюсь, это поможет

...