Как делать авторизацию на фронтэнде в MODx

Поделиться
HTML-код
  • Опубликовано: 8 янв 2025

Комментарии • 24

  • @slavamirgorodsky7461
    @slavamirgorodsky7461 2 года назад

    Артем, привет. Спасибо за урок.
    Скажи, пожалуйста, есть ли разница между привязкой этого плагина к OnMODXInit и к OnHandleRequest? И еще: почему нужно проверять $modx->user? Нельзя ли обойтись второй частью условия - $modx->user->hasSessionContext($modx->context->key)?

    • @OpenModx
      @OpenModx  2 года назад

      Привет!
      OnMODXInit - это самое первое событие, генерируемое в системе. Оно генерируется всегда, когда инициализируется MODX, хоть в админке, хоть на фронте. А событие OnHandleRequest генерируется при инициализации класса modRequest (до обработки запроса, если мне память не изменяет). То есть оно генерируется во-первых только на фронтенде, во-вторых не самым первым в системе.
      Поэтому, если тебе нужно добавить в систему какую-то функциональность, которую планируешь использовать всегда и везде в разных частях, то эту фунциональность лучше добавлять через событие OnMODXInit. А OnHandleRequest использовать, например, только для работы на фронте.
      Проверять $modx->user и $modx->user->hasSessionContext лучше в паре, так как если по какой-либо причине в $modx->user будет null, то без первой части условия $modx->user->hasSessionContext вызовет фатальную ошибку.

  • @liliyagrishina
    @liliyagrishina 2 года назад

    Почему нельзя использовать сниппет Login?

    • @OpenModx
      @OpenModx  2 года назад

      Очень даже можно. Я в видео показал, как это делается без сторонних дополнений, чтобы зритель мог увидеть, как это работает при использовании нативных функций ядра modx.

  • @victorveton6066
    @victorveton6066 2 года назад

    А есть ссылка на гитхаб или просто какой то текстовый файл на все вышеперечисленное?

    • @OpenModx
      @OpenModx  2 года назад

      К сожалению, наверное, нет. Видео записывал раньше, чем стал публиковать материалы на GitHub

  • @megabulk
    @megabulk 7 лет назад

    Как раз то что мне надо

  • @optimizeit
    @optimizeit 7 лет назад +2

    Понабежали Павлы в комментарии )

  • @szed8135
    @szed8135 6 лет назад

    А как сделать кнопку запомнить меня?

    • @OpenModx
      @OpenModx  6 лет назад +1

      На самом деле кнопка "Запомнить меня" просто ставит увеличенное время хранения сессии пользователя.

    • @szed8135
      @szed8135 6 лет назад

      Пробовал менять время через ini_set('session.gc_maxlifetime', 1440); Но суть в том что какое бы время не ставил, всегда при закрытии и открытии браузера вход не выполнен. И как я понял плейсхолдера user_authorized при повторном открытии браузера уже нет.

    • @OpenModx
      @OpenModx  6 лет назад

      Не забывай о том, что в modx сессии переопределены и хранятся в базе данных, поэтому можешь копнуть в эту сторону. Проверь вообще, сохраняется ли какая-либо другая инофрмация в сессии после закрытия/открытия браузера. Может быть у тебя просто теряется Cookie с названием PHPSESSID. Кстати, проверь еще время жизни этого Cookie - может у тебя время жизни стоит "до закрытия браузера"

    • @szed8135
      @szed8135 6 лет назад

      У PHPSESSID expires/max age равно Session, а вот value меняется при закрытии и открытии браузера. Точно так же происходит если зайти в админку manager, не ставя галочки Запомнить меня, если же ее поставить то value сохраняется и значение expires/max age уже на неделю вперед.

    • @szed8135
      @szed8135 6 лет назад

      Пробовал после addSessionContext прописывать. setcookie('PHPSESSID', $_COOKIE["PHPSESSID"], time() + (33600 * 24 * 30));
      Теперь вроде бы кука продлевается и сохраняется, но при входе в форму пользователь не авторизуется.

  • @igorkroshkin9354
    @igorkroshkin9354 4 года назад

    Как обычно, никакой защиты от спама. Гарантирую массу авто регистраций и санкции со стороны хостинга :(

    • @OpenModx
      @OpenModx  4 года назад

      Достаточно внедрить динамическое hidden поле в форму через javascript и делать его проверку на стороне сервера и тогда проблема будет решена в 99% случаев. Как правило боты-авторегистраторы не выполняют javascript на странице и потому данную проверку не проходят.

  • @konstantinp440
    @konstantinp440 7 лет назад

    сыкотно коммент ставить. Павлы одни )))