Symfony 2 Security: продолжает перезагружать данные у поставщика услуг?

Когда пользователь уже выполнил вход в систему, компонент безопасности продолжает перезагружать данные у поставщика услуг на каждом повторном уровне. Есть ли способ избежать этого? Если ваш провайдер не находится в локальной базе данных, например, в веб-сервисе, это может значительно замедлить работу системы.

По каждому запросу я получаю следующее:

[2012-08-15 20:07:30] security.DEBUG: Read SecurityContext from the session [] []
[2012-08-15 20:07:30] security.DEBUG: Reloading user from user provider. [] []

Ответ 1

Вы можете решить, не обновлять ли ваш пользователь для каждого запроса в зависимости от ваших потребностей, переопределяя метод refreshUser реализации UserProviderInterface, на который вы полагаетесь, из определенного контекста безопасности.

Обратитесь к следующей документации API:

UserProviderInterface.html#method_refreshUser

Реализация должна решить, должны ли пользовательские данные полностью перезагружается (например, из базы данных) или если UserInterface объект можно просто объединить в некоторый внутренний массив пользователей/идентификатор карта.