Вопросы

Почему Symfony Guard запускает событие security.interactive_login при каждом запросе?

У меня есть приложение Symfony 3.2, которое предоставляет REST API и использует Json Web Tokens (JWT) для аутентификации. Недавно я перешел на использование компонента Symfony’s Guard. Теперь мой security.yml содержит следующий раздел конфигурации брандмауэра (я использую пакет Lexik JWT 2.4.0, но это не имеет значения):

firewalls:
    # ...
    api:
        pattern:   ^/api
        stateless: true
        guard:
            authenticators:
               - lexik_jwt_authentication.jwt_token_authenticator

Поскольку я сделал это переключение, я заметил, что каждый запрос обрабатывается так, как если бы пользователь только что вошел в систему, т.е. запускается событие security.interactive_login. В документации (https://symfony.com/doc/current/components/security/authentication.html#authentication-events) говорится:

Событие security.interactive_login запускается после того, как пользователь активно вошел на ваш сайт. Важно отличать это действие от неинтерактивных методов аутентификации, таких как: аутентификация на основе файла cookie «запомнить меня», аутентификация на основе вашего сеанса, аутентификация с использованием базового HTTP-заголовка или дайджеста-заголовка HTTP. Вы можете прослушивать событие security.interactive_login, например, чтобы выдавать вашему пользователю приветственное флэш-сообщение каждый раз, когда он входит в систему.

Поэтому я определенно не ожидаю этого события для каждого запроса — я бы предпочел получать событие security.authentication.success при каждом запросе, как указано в документации.

Читать:
Сбой развертывания Azure Pipeline в службе веб-приложений с отсутствующим обязательным свойством OutputPath

Однако класс GuardAuthenticatorHandler Symfony отправляет событие security.interactive_login в своем authenticateWithToken методе, и этот метод вызывается GuardAuthenticationListener при каждом запросе. Это ошибка в Symfony, недоразумение с моей стороны или из-за неправильной конфигурации?

(Это не философский вопрос — в моем случае он приводит к конкретной проблеме, заключающейся в том, что время последнего входа пользователя в систему обновляется при каждом запросе, что не имеет смысла.)

вы нашли решение? У меня точно такая же проблема, и я хочу чистое решение, а не упоминание о взломе ниже …   —  person dwytrykus    schedule 20.03.2020

К сожалению, я не нашел подходящего решения.   —  person dwytrykus    schedule 23.03.2020

Похожие записи

Ошибка при запуске `gatsby build` с Kentico Kontent

admin

Uncaught SyntaxError: невозможно использовать оператор импорта вне модуля

admin

Cypress — Ошибка: не удается найти модуль ‘../../webpack.config.js’

admin

Отменить доступ к одной из многих баз данных в MySQL

admin

SCSS Mixin с использованием корневого селектора

admin

Как собрать .ipa для React Native?

admin