• Блог
  • [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 уведомление пользователю при авторизации в админке через его логин, как это сделано в банк-клиентах. Но потом решил, что это уже перебор.

0   169

Комментарии ()

    Вы должны авторизоваться, чтобы оставлять комментарии.

    Выделите опечатку и нажмите Ctrl + Enter, чтобы отправить сообщение об ошибке.