[AdminTools] Аутентификация через email
В новой версии можно аутентифицироваться в админке просто указав имя пользователя или email. На почту придет ссылка, кликнув на которую в течение определённого времени произойдет аутентификация в админке.Мне нравится такой способ и мне кажется он достаточно безопасный. Войти можно только с того же компьютера и в том же браузере, с которого была послана ссылка.
Реализовать через ExtJs у меня не получилось, нет никакой возможности подключить свои скрипты на страницу с формой — у контроллера авторизации не работают методы addJavascript() и addCss() (они работают, но их результат не учитывается), а переопределить этот контроллер при загрузке страницы никак — он жёстко прописывается в коде. По крайней мере, я не нашёл такого способа. А менять ядро по понятным причинам не хотелось. Поэтому я решил использовать стандартную возможность MODX — с версии 2.2.0 можно указывать альтернативный адрес формы авторизации. Но чтобы аутентификация заработала, нужно выполнить настройку.
Настройка
Для начала нужно её включить в системных настройках, по-умолчанию она выключена. Там же нужно указать id страницы, на которой будет размещаться форма. Лично я создал новую страницу с пустым шаблоном, на которой вызываю сниппет adminLogin, отвечающий за авторизацию.
<!DOCTYPE html> <html lang="ru"> <head> <meta http-equiv="Content-Type" content="text/html; charset=[[++modx_charset]]" /> <meta name="robots" content="noindex" /> <base href="[[++site_url]]" /> <title>[[*pagetitle]]</title> </head> <body> [[!adminLogin]] <script>requirejs(["app/community", "app/counters"]);</script> </body> </html>
Так получается максимально похоже на админку. Сама форма находится в чанке tpl.login.form.
Как работает
Для авторизации нужно ввести логин или email. Если у пользователя нет прав на админку, то «давай, до свидания». Если права есть, то на указанный или найденный по логину email, будет выслана ссылка. Она будет активна согласно системной настройке authorization_ttl
. По-умолчанию, 10 минут. По истечению этого времени она деактивируется. Также как и при авторизации через неё. Второй раз по ней не зайдешь. В общем, я уже пользуюсь, вроде всё ок. Но версия пока бета. Кому такая возможность не нужна, просто не включайте настройку.
Что ещё хотел отметить. Аутентификация происходит через стандартный login-процессор, поэтому все события отрабатывают как положено.
Была ещё мысль в целях повышения безопасности сделать email уведомление пользователю при авторизации в админке через его логин, как это сделано в банк-клиентах. Но потом решил, что это уже перебор.
Вы должны авторизоваться, чтобы оставлять комментарии.
Комментарии ()