Василий Наумкин
С нами с 08 декабря 2012; Место в рейтинге пользователей: #1[jwtSession] Перенос сессии в куки браузера
Привет, друзья!
Вы задумывались, как работают сессии в MODX? Каждый раз, когда кто-то заходит на сайт, PHP генерирует ему уникальный id и сохраняет его в куку PHPSESSID. При этом в базе данных создаётся запись modSession с этим id и содержимым текущей сессии.
При каждом запросе на сайт передаётся кука с id, MODX делает запрос в БД, загружает сессию, а потом сохраняет в неё изменения. Минимум 2 запроса в БД каждый раз.
Что же нам предлагает JWT? Отказаться от всех этих действий на сервере, и выдавать всё нужное сразу в одном токене. Он может храниться в кукисах или в локальном хранилище браузера. Ну а дальше, при запросе, из него будет создана сессия пользователя. Соответственно, мы выкидываем работу с БД и не храним пользовательские сессии на сервере вовсе.
Конечно, сразу же встаёт вопрос — а что будет, если пользователь такую сессию подделает? Стандарт JWT ему этого не позволит. Токены можно прочитать, но не изменить, потому что они все подписаны надёжным алгоритмом с ключом на сервере, который пользователь не знает. Это теория, а теперь переходим к практике в MODX.
Вы задумывались, как работают сессии в MODX? Каждый раз, когда кто-то заходит на сайт, PHP генерирует ему уникальный id и сохраняет его в куку PHPSESSID. При этом в базе данных создаётся запись modSession с этим id и содержимым текущей сессии.
При каждом запросе на сайт передаётся кука с id, MODX делает запрос в БД, загружает сессию, а потом сохраняет в неё изменения. Минимум 2 запроса в БД каждый раз.
Что же нам предлагает JWT? Отказаться от всех этих действий на сервере, и выдавать всё нужное сразу в одном токене. Он может храниться в кукисах или в локальном хранилище браузера. Ну а дальше, при запросе, из него будет создана сессия пользователя. Соответственно, мы выкидываем работу с БД и не храним пользовательские сессии на сервере вовсе.
Конечно, сразу же встаёт вопрос — а что будет, если пользователь такую сессию подделает? Стандарт JWT ему этого не позволит. Токены можно прочитать, но не изменить, потому что они все подписаны надёжным алгоритмом с ключом на сервере, который пользователь не знает. Это теория, а теперь переходим к практике в MODX.
[Jevix] Версия 1.3
Еще одно дополнение, которое давно не обновлялось.
Но тут случилось сразу 2 события:
— @Евгений Борисов собрал все фиксы в одном репозитории и опубликовал Jevix на packagist. Так что теперь его можно использовать в любых проектах через Composer.
— и @Fi1osof заметил недоработку с формированием ссылок со знаком @
Но тут случилось сразу 2 события:
— @Евгений Борисов собрал все фиксы в одном репозитории и опубликовал Jevix на packagist. Так что теперь его можно использовать в любых проектах через Composer.
— и @Fi1osof заметил недоработку с формированием ссылок со знаком @
[Theme.Bootstrap] Новая версия с Bootstrap 4
Привет, друзья!
Наконец-то у меня дошли руки до обновления Theme.Bootstrap, который не менялся аж с 2017 года. Причина проста — если переводить его на Bootstrap 4, то нужно менять и стандартные чанки у кучи дополнений, а это долго.
В итоге, вместе с Theme.Bootstrap были обновлены и:
Наконец-то у меня дошли руки до обновления Theme.Bootstrap, который не менялся аж с 2017 года. Причина проста — если переводить его на Bootstrap 4, то нужно менять и стандартные чанки у кучи дополнений, а это долго.
В итоге, вместе с Theme.Bootstrap были обновлены и:
- pdoTools
- miniShop2 (помимо чанков вошли еще несколько правок, см. changelog)
- mSearch2 (а здесь чанки даже на Fenom переписаны, ура!)
- Office
Чистка пользователей сообщества
Вслед за упоминанием пользователей пришлось и почистить наши username, потому что там столько всякий дичи, еще со времён bezumkin.ru!
Первым делом я отключил все аккаунты, которые не заходили сюда больше года. Из 7+ тысяч пользователй осталось всего 2+. А затем уточнил правила для username пользователей:
Первым делом я отключил все аккаунты, которые не заходили сюда больше года. Из 7+ тысяч пользователй осталось всего 2+. А затем уточнил правила для username пользователей:
- Логин должен быть от 2 и до 50 символов
- Содержать английский алфавит, цифры, точку, тире и подчёркивание.
- Должен начинаться и заканчиваться цифрой или буквой
- Цифры, точки и подчеркивания не могут повторяться подряд
Упоминание пользователей
Привет друзья!
Рад анонсировать новую функцию в нашем сообществе, которая давно стала привычной на всех крупных сервисах — это возможность упомянуть пользователя, чтобы ему пришло уведомление, а само упоминание стало ссылкой на его профиль.
Работает как обычно, просто начните набирать @ и вам вылезет автоподсказка. Продолжайте набирать имя, и найдёте нужного пользователя.
Примерно так:
Рад анонсировать новую функцию в нашем сообществе, которая давно стала привычной на всех крупных сервисах — это возможность упомянуть пользователя, чтобы ему пришло уведомление, а само упоминание стало ссылкой на его профиль.
Работает как обычно, просто начните набирать @ и вам вылезет автоподсказка. Продолжайте набирать имя, и найдёте нужного пользователя.
Примерно так:
[mSearch2] Версия 1.13 с поддержкой плагинов ms2
Представляю вам новую версию самого популярного дополнения в modstore.pro, которая улучшает работу фильтра с дополнениями для скидок.
Как известно, mFilter2 работает напрямую с базой данных, чтобы выбирать все данные для построения фильтров максимально быстро. И если эти данные чем-то меняются перед выводом, например дополнением msDiscount, то в фильтре цены будут одни значения, а при выводе товаров — другие.
Раньше мы просто расширяли фильтр и добавляли поддержку плагинов при выборке, но в новой версии это сделано из коробки.
Как известно, mFilter2 работает напрямую с базой данных, чтобы выбирать все данные для построения фильтров максимально быстро. И если эти данные чем-то меняются перед выводом, например дополнением msDiscount, то в фильтре цены будут одни значения, а при выводе товаров — другие.
Раньше мы просто расширяли фильтр и добавляли поддержку плагинов при выборке, но в новой версии это сделано из коробки.
Thanks to the author
Hello, my friends!
Yesterday, the Habr announced thanks to Habr's authors, and I thought — why are we worse?
From today, you can specify details for payment services in your settings, and immediately after that you will have a button in your profile and in topics, next to the name. So far, I added these services:
Yesterday, the Habr announced thanks to Habr's authors, and I thought — why are we worse?
From today, you can specify details for payment services in your settings, and immediately after that you will have a button in your profile and in topics, next to the name. So far, I added these services:
- Paypal
- Donation Alerts
- WebMoney
- Yandex.Money
- Qiwi
Благодарности автору
Привет, друзья!
Вчера Хабр анонсировал Пользовательское вознаграждение авторам Хабра, и я подумал — а чем мы хуже?
С сегодняшнего дня вы можете указывать реквизиты для платёжных сервисов в своих настройках, и сразу после этого у вас появится кнопочка в профиле и в заметках, рядом с именем. Пока что добавил вот эти сервисы:
Вчера Хабр анонсировал Пользовательское вознаграждение авторам Хабра, и я подумал — а чем мы хуже?
С сегодняшнего дня вы можете указывать реквизиты для платёжных сервисов в своих настройках, и сразу после этого у вас появится кнопочка в профиле и в заметках, рядом с именем. Пока что добавил вот эти сервисы:
- Яндекс.Деньги
- Paypal
- Qiwi
- Donation Alerts
- WebMoney
Что происходит с MODX 3
Регулярно поступают вопросы «а когда выйдет MODX3», «а что с ним происходит» и т.п. Поэтому решил написать небольшую заметку, чтобы потом на неё ссылаться.
MODX3 почти готов. Всё, что было написано в изначальном плане разработки (и даже сильно больше того) — сделано.
Но есть одна небольшая загвоздка: в текущей версии MODX3 вся модель самой системы — от версии 2. А внутри встроен xPDO3 с переходниками.
Сгенерировать модель для дополнений, например miniShop2, чтобы оно работало в MODX3 можно только на MODX2.
Потому что xPDO3 в составе MODX3 генерирует модель с namespaces, которая не работает со старой моделью ядра.
MODX3 почти готов. Всё, что было написано в изначальном плане разработки (и даже сильно больше того) — сделано.
Но есть одна небольшая загвоздка: в текущей версии MODX3 вся модель самой системы — от версии 2. А внутри встроен xPDO3 с переходниками.
Сгенерировать модель для дополнений, например miniShop2, чтобы оно работало в MODX3 можно только на MODX2.
Потому что xPDO3 в составе MODX3 генерирует модель с namespaces, которая не работает со старой моделью ядра.
Бесплатные приватные репозитории на Github
Новость совсем не про MODX, но очень важная для всех разработчиков.
Начиная с 2019 года, на Github можно создавать приватные репозитории для своих проектов даже на бесплатном тарифе. Ограничение — не более 3х разработчиков на репозиторий.
Лично у меня таких репозиториев полно и разработчик везде один, так что я с большим удовольствием переехал обратно на бесплатный тариф. Оказывается, за 5 лет на подписку ушло примерно $400.
Ссылка на официальную новость
Начиная с 2019 года, на Github можно создавать приватные репозитории для своих проектов даже на бесплатном тарифе. Ограничение — не более 3х разработчиков на репозиторий.
Лично у меня таких репозиториев полно и разработчик везде один, так что я с большим удовольствием переехал обратно на бесплатный тариф. Оказывается, за 5 лет на подписку ушло примерно $400.
Ссылка на официальную новость