ertttert
Пользователи — это смысл работы с Drupal. Среда Drupal может помочь пользователям создавать общие проекты, совместно работать над ними и формировать онлайновые сообщества. В данной главе вы узнаете о механизмах аутентификации, входа и внутреннего представления пользователей. Мы начнем с рассмотрения объекта $user
и его структуры. Затем разберемся с процессом регистрации, входа и аутентификации пользователей. В конце главы будет показано, как связать Drupal с внешними системами аутентификации, такими как LDAP и Pubcookie.
Согласно требованиям Drupal, пользователь для выполнения входа должен иметь включенные cookie
-наборы: пользователь с отключенными cookie
-наборами может взаимодействовать с Drupal только как анонимный пользователь. Во время процесса загрузки Drupal создает глобальный объект $user
, который представляет сущность текущего пользователя. Если пользователь не вошел в систему (и поэтому не имеет cookie
-набора сеанса), он считается анонимным пользователем. Код создания анонимного пользователя выглядит следующим образом (и находится в файле includes/bootstrap.inc
):
function drupal_anonymous_user( $session = '') { $user =new stdClass() ; $user->uid = 0; $user->hostname = ip_address(); $user->roles = array(); $user->roles[DRUPAL_ANONYMOUS_RID] = 'anonymous user'; $user->session = $session; $user->cache = 0;return $user; }
С другой стороны, если пользователь выполнил вход, объект $user
создается соединением таблиц users
, user_roles
и sessions
по идентификатору пользователя. Значения всех полей из всех таблиц заносятся в объект $user
.
users
.Содержимое объекта $user
легко просмотреть: для этого нужно добавить в файл index.php
операторы global $user; print_r($user);
. Ниже показано, как обычно выглядит объект $user
для выполнившего вход пользователя:
stdClass Object ( [uid] => 1 [name] => admin [pass] => $S$CnUvfOYdoxl/Usy.X/Y9/SCmOLLY6Qldrzjf7EOW0fR4LG7rCAmR [mail] => joe@example.com [theme] => [signature] => [signature_format] => 0 [created] => 1277957059 [access] => 1278254230 [login] => 1277990573 [status] => 1 [timezone] => [language] => [picture] => 0 [init] => joe@example.com [data] =>[sid] => 8cnG9e0jsCC7I7IYwfWB0rmRozIbaLlk35IQGN5fz9k[ssid] =>[hostname] => ::1[timestamp] => 1278254231[cache] => 0[session] => batches|a:1:{i:3;b:1;} [roles] =>Array ( [2] => authenticated user [3] => administrator) }
В этом объекте $user
данные полей, имена которых выделены sessions
. Назначение компонентов объекта $user
объясняется в табл. 6.1.
Таблица 6.1. Компоненты объекта
uid | Идентификатор данного пользователя. Является первичным ключом таблицы users и уникален для данной инсталляции Drupal |
name | Имя пользователя, вводимое пользователем при входе |
pass | Хеш пароля пользователя, вычисленный по алгоритму sha512; сравнивается при входе пользователя. Сами пароли не сохраняются, и поэтому их невозможно восстановить, а можно только изменить |
Адрес электронной почты пользователя | |
theme | Поле не рекомендуется для использования, но оставлено по соображениям совместимости |
signature | Подпись, которую пользователь вводит на странице своей учетной записи. Применяется, когда пользователь добавляет комментарий, и отображается, если только активирован модуль комментирования |
signature format | Формат подписи пользователя (т.е. фильтрованный текст или полный текст) |
created | Метка времени Unix для момента создания учетной записи пользователя |
access | Метка времени Unix для момента последнего обращения пользователя |
login | Метка времени Unix для момента последнего успешного входа |
status | Содержит 1, если пользователь на хорошем счету, и 0, если пользователь заблокирован |
timezone | Количество секунд, на которое местное время пользователя отличается от GMT |
language | Стандартный язык пользователя. Обычно пусто, за исключением случаев, когда на сайте активировано несколько языков и пользователь выбрал язык в форме настройки учетной записи |
picture | Путь к файлу изображения, которое пользователь назначил для своей учетной записи |
init | Почтовый адрес, введенный пользователем при первоначальной регистрации |
data | Произвольные данные, которые могут храниться в этом поле модулями |
roles | Роли, назначенные в данный момент сеансу пользователя системой PHP |
sid | Идентификатор, назначенный сеансу данного пользователя системой PHP |
ssid | Идентификатор, назначенный защищенному сеансу пользователя системой PHP |
hostname | IP-адрес, с которого пользователь просматривает текущую страницу |
timestamp | Метка времени Unix для момента, когда браузер пользователя в последний раз получил заполненную страницу |
cache | Метка времени, используемая для кэширования отдельных пользователей (см. includes/cache.inc ) |
session | Произвольные временные данные, которые могут сохраняться здесь модулями во время сеанса пользователя |
Всего комментариев: 3 | ||||
| ||||