В данном разделе мы продолжим разговор об аутентификации с того места, где остановились в главе 4. Мы уже рассмотрели недостатки метода базовой аутентификации HTTP (HTTP Basic Authentication) и отметили тот факт, что аутентификация на основе PHP этих недостатков лишена. Библиотека PHPLib содержит сложные классы для обработки данных аутентификации пользователей и управления правами доступа.
Библиотека PHPLib аутентифицирует сеансы, а следовательно, зависит от класса Session. Для тех страниц, где требуется аутентификация, необходимо произвести следующий вызов функции page_open() для инстанцирования объекта сеанса и аутентификации.
page_open(array("sess" => "Session_Example", "auth" => "Auth_Example"));
Поскольку данный механизм аутентификации базируется на концепции сеансов работы пользователей, он имеет ряд преимуществ, перечисленных ниже.
-
Имя пользователя и элемент аутентификации пересылаются только один раз, в начале сеанса. После успешной аутентификации сервер хранит дату аутентификации внутри сеанса и больше не передает имя пользователя и элемент аутентификации. Для сравнения: при базовой аутентификации HTTP имя пользователя и пароль передаются в заголовках HTTP каждого запроса. Однако если вы теряете сеанс в PHP, то вы теряете аутентификацию.
-
Процедура аутентификации на сервере может быть сложной. В ней может использоваться база данных или другой аналогичный механизм. Аутентификация выполняется неопределенной функцией auth_validatelogin() класса Auth. Реализация этой функции за вами.
-
Данная методика не ограничена уровнем доступа к папкам; механизм аутентификации может быть различным для отдельных файлов приложения и даже для разных уровней приложения внутри одного сценария. Какие-то части сценария можно скрыть от не имеющих к ним доступа пользователей.
-
Пользователи, не известные системе, могут зарегистрироваться перед началом процедуры входа в систему. Пользователю предлагается соответствующая форма, и библиотека PHPLib автоматически создает для нового пользователя стандартную запись в базе данных о пользователях.
-
Аутентификация работает даже в версии программы PHP на основе CGI.
-
Вы можете организовать для пользователей явный выход из системы. Это означает, что пользователи имеют возможность явным образом завершить текущий сеанс (предусмотрена кнопка выхода из системы).
-
Сеанс работы пользователя может быть завершен автоматически по истечении заданного времени ожидания. Это обеспечивает дополнительный уровень защиты данных приложения, поскольку вы можете по истечении времени ожидания предотвратить несанкционированный доступ к данным сеанса.