Прозрачная преавторизация — различия между версиями
Denisov (обсуждение | вклад) |
Denisov (обсуждение | вклад) |
||
Строка 4: | Строка 4: | ||
'''Для использования данного функционала в версии ''2.8'' и выше, необходимо в ''config.ini'' в секции ''kernel'' включить ''enable-pre-auth''.''' | '''Для использования данного функционала в версии ''2.8'' и выше, необходимо в ''config.ini'' в секции ''kernel'' включить ''enable-pre-auth''.''' | ||
+ | |||
+ | '''Внимание! С версии 15 ''u-password-md5'' не поддерживается в целях безопасности!''' | ||
=== Суть ее в следующем: === | === Суть ее в следующем: === | ||
Строка 27: | Строка 29: | ||
GET: http://localhost/?u-login=login&u-password=password | GET: http://localhost/?u-login=login&u-password=password | ||
− | |||
− | |||
− | |||
[[Категория:Вопросы и уроки разработки сайтов на UMI.CMS]][[Категория:Модуль Пользователи]] | [[Категория:Вопросы и уроки разработки сайтов на UMI.CMS]][[Категория:Модуль Пользователи]] |
Версия 13:09, 31 октября 2019
Начиная с ревизии 4097 в систему (все редакции) добавлена определенная возможность, рабочее название которой - "Прозрачная преавторизация".
Актуально для версии 20
Для использования данного функционала в версии 2.8 и выше, необходимо в config.ini в секции kernel включить enable-pre-auth.
Внимание! С версии 15 u-password-md5 не поддерживается в целях безопасности!
Суть ее в следующем:
До начала всякого процессинга любой страницы система теперь проверяет, не передан ли ей логин и пароль зарегистрированного пользователя, и если передан - прозрачно авторизует его. "Прозрачно" - значит без вывода каких-то форм, без переброски на какие-то адреса после авторизации и т.п. Просто, если данные переданы верно, она начинает работать с правами соответствующей учетной записи (если не верно - от Гостя).
Как передать данные:
Система просматривает сначала куки, потом заголовки текущего HTTP запроса, затем параметры POST, GET запроса. Поля должны называться u-login, u-password, u-password-md5. Для успешной преавторизации должен быть обязательно передан параметр u-login и один из u-password или u-password-md5.
Для чего это надо ? Теперь можно разово получать данные из системы от лица какого-то пользователя без прохождения ручной процедуры авторизации (через users/login - users/login_do). В первую очередь это полезно для автоматизации запросов, но можно использовать и для каких-то интерфейсных решений, чтобы избежать переходов на страницу авторизации и обратно (например, добавление окошка "сменить пользователя" в админке).
Дополнительно можно передать параметр u-session-id, если вам необходимо, чтобы пользователь авторизовался в уже привязанной к нему сессии. Это полезно, допустим, для http-запросов из php-кода. Тогда сервер создаст новый процесс, но запустит его в той же сессии, что и вызывающий. (Если будет передан идентификатор сессии, не привязанный ранее к указанному пользователю, система сбросит текущую авторизацию и начнет работать от Гостя).
Примеры
<?php
// Устанавливаем необходимые поля в куки
setcookie("u-login", "login", (time() + 31536000), "/");
setcookie("u-password-md5", md5("password"), (time() + 31536000), "/");
?>