Почему информация о пользователе хранится в двух разных таблицах в поставщике членства по умолчанию в ASP.NET? - PullRequest
10 голосов
/ 27 апреля 2009

Есть две таблицы: aspnet_users и aspnet_membership. Кто-нибудь может уточнить причины, по которым они не используют для этого ни одной таблицы?

Ответы [ 6 ]

12 голосов
/ 27 апреля 2009

Таблица членства содержит информацию, относящуюся к интерфейсу API MembershipProvider . В таблице users хранятся имена пользователей и идентификаторы пользователей, на которые ссылаются многие поставщики.

  • Пользователи
    • Членство (MembershipProvider)
    • Профиль (ProfileProvider)
    • Роли (RoleManager)
    • и т.д.

Система aspnetdb очень модульная, и каждый компонент может быть настроен различными провайдерами. Таблицы должны быть разделены, чтобы каждый интерфейс можно было переписать, перенаправить и т. Д.

0 голосов
/ 25 июня 2011

Таблица aspnet_users содержит информацию для всех пользователей: анонимных и не анонимных. Таблица aspnet_membership содержит информацию о зарегистрированных пользователях (без анонимности).

0 голосов
/ 28 апреля 2009

aspnet_users содержит пользователей, которых вы создаете (ФОРМЫ аутентификации) ... ПРИМЕЧАНИЕ, когда ваша аутентификация установлена ​​на WINDOWS, пользователи - это пользователи WINDOWS, например. домен \ firstname.lastname

aspnet_membership содержит информацию о предпочтениях членства, используемую в таких вещах, как WebPart s и пользовательские настройки

0 голосов
/ 27 апреля 2009

Я нашел это объяснение с этой страницы :

SqlMembershipProvider хранит информацию об учетной записи пользователя в двух связанных таблицах:

  • aspnet_Users - имеет запись для каждой учетной записи пользователя, в которой хранятся самые необходимые данные. Столбец UserId уникально идентифицирует каждого пользователя в системе и сохраняется как уникальный идентификатор (GUID).

  • aspnet_Membership - содержит столбец UserId, который связывает каждую запись с определенной записью в aspnet_Users. В таблице aspnet_Membership хранятся основные данные, связанные с каждой учетной записью пользователя: электронная почта, пароль, секретный вопрос и ответ и т. Д.

0 голосов
/ 27 апреля 2009

Честно говоря, для меня это тоже не имеет особого смысла. Кажется, что таблица aspnet_Membership была настроена для размещения информации о пользователе / ​​уровне приложения, но UserID - это PK. Очень странно. Возможно, в какой-то более поздней версии вы настраивали себя для ситуации, когда у вас есть несколько приложений на пользователя.

Дейв упоминает, что есть и другие таблицы, такие как aspnet_Profile, которые содержат специфическую для пользователя информацию. Возможно, пользователи ASP.NET 2.0 просто пытались разделить различные группы полей на более легко усваиваемые фрагменты.

Я знаю, что это всего лишь догадка. Надеюсь, кто-то с некоторыми фактическими знаниями примет участие.

0 голосов
/ 27 апреля 2009

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

Подробнее об этом:

Некоторые поставщики ASP.NET хранят / используют информацию в контексте имени пользователя. Одним из них является MembershipProvider , который предоставляет хранилище аутентификации и набор услуг.

Другим является ProfileProvider , который позволяет хранить пользовательские данные для каждого пользователя.

Вы по-прежнему можете использовать ProfileProvider независимо от того, выбрали ли вы MembershipProvider . * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * То, поэтому * * * * * * * * * *.

Надеюсь, это прояснит причину разделения.

...