Таблица authmap
Таблица authmap используется модулями аутентификации (такими как OpenID, OAuth, LDAP) для связывания идентификаторов из внешних систем с локальными учетными записями пользователей Drupal. Это позволяет пользователям входить на сайт с использованием учетных данных из внешних сервисов.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
aid |
int |
Уникальный идентификатор записи (Auto-Increment). Первичный ключ таблицы. |
uid |
int |
Идентификатор пользователя Drupal. Внешний ключ, ссылается на users.uid. Равен 0 для анонимных пользователей.
|
authname |
varchar(128) |
Уникальный идентификатор пользователя во внешней системе аутентификации (например, полный OpenID URL, email для LDAP, идентификатор социальной сети).
|
module |
varchar(128) |
Имя модуля, который добавил эту запись (например, openid, ldap, oauth). Определяет, какой модуль ответственен за обработку данной аутентификации.
|
Как это работает
Когда пользователь впервые входит на сайт через внешний сервис (например, Google, Facebook), система проверяет таблицу authmap на наличие записи с идентификатором authname для указанного модуля module.
Если запись найдена, пользователь авторизуется под соответствующей учетной записью Drupal (uid). Если запись не найдена, в зависимости от настроек модуля может быть создана новая учетная запись пользователя, и тогда в authmap добавляется новая строка, связывающая uid новой учетной записи с внешним authname.
Одна учетная запись Drupal (uid) может быть связана с несколькими идентификаторами из разных или одного и того же модуля внешней аутентификации. Это позволяет пользователю входить на сайт разными способами.
При удалении пользователя (записи из users) все связанные с ним записи в authmap также удаляются благодаря внешнему ключу с опцией ON DELETE CASCADE.
Пример SQL-запроса
Найти всех пользователей, которые аутентифицируются через модуль openid, и их внешние идентификаторы:
SELECT u.uid, u.name, a.authname
FROM authmap a
INNER JOIN users u ON a.uid = u.uid
WHERE a.module = 'openid';
Проверить, привязан ли какой-либо аккаунт Drupal к внешнему идентификатору https://myopenid.com/user:
SELECT u.uid, u.name, a.module
FROM authmap a
INNER JOIN users u ON a.uid = u.uid
WHERE a.authname = 'https://myopenid.com/user';
Смотрите также
-
таблицу
users,
которая хранит основные данные пользователей -
таблицу
users_field_data,
которая содержит дополнительные поля пользователей -
таблицу
sessions,
которая управляет пользовательскими сессиями -
таблицу
user__roles,
которая хранит назначенные пользователям роли