Всем привет!

Вчера мне пришлось немного поломать голову над тем, как совместить использование CSRF и JWT с минимальными изменениями в рабочем коде. Как известно, использование CSRF токена в Laravel настроено по умолчанию, и при POST запросах ajax используется следующая схема.

Сам токен записывается в meta тег csrf-token, верно? Это стандартно в Laravel, упоминания об этом можно найти сразу же в разделе Routing в документации. Однако все хорошо до поры до времени — эта схема нерабочая, если ваша система должна поддерживать Rest интерфейсы, например, для доступа с мобильного приложения.

В Packagist  есть очень хорошая библиотека для работы с токенами с помощью JWT Auth. Подробно узнать что такое JSON Web Token можно здесь, попробую описать кратко, буквально в пару слов что это за зверь и как мы его можем использовать.

JWT это открытый стандарт обмена данными между ресурсами в качестве JSON объекта. Эта информация считается проверенной и ей можно доверять. Указанная выше библиотека берет на себя всю логику обработки, проверки и подтверждения полученных запросов, в настройках можно указать время жизни токена, а уже в готовых Middleware процедуры проверки подлинности и обновления токена, если он истек.

Continue reading