2012-08-15 8 views
10

Cuando un usuario ya inició sesión, el componente de Seguridad continúa recargando datos del proveedor del usuario en cada momento. Hay alguna manera de evitar esto? Cuando su proveedor de usuario no está en una base de datos local, por ejemplo, en un servicio web, esto puede ralentizar drásticamente el sistema.Symfony 2 Seguridad: ¿mantiene la recarga de datos del proveedor del usuario?

En cada petición que sale esto:

[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

Los usuarios se actualizan al llamar a UserProvider :: refreshUser. Por lo tanto, podría extender el proveedor del sistema y cambiar el usuario de actualización para que no haga nada o tal vez agregue alguna lógica de tiempo. Eso es lo que hago. Algo curioso para ver si hay una mejor manera. – Cerad

+0

refreshUser() se llama en cada solicitud? Además, ¿qué haces? ¿Acabas de devolver el nulo? – vinnylinux

+0

Sí y sí. Por supuesto, depende de usted volver a cargar al usuario si su información cambia. – Cerad

Respuesta

6

usuario decide si o no para refrescar el usuario para cada solicitud en función de sus necesidades reemplazando el método de la aplicación UserProviderInterfacerefreshUser usted confía en a partir de una determinada contexto de seguridad.

Por favor refiérase a la siguiente documentación de la API:

UserProviderInterface.html#method_refreshUser

Corresponde a la aplicación para decidir si los datos de usuario deben ser totalmente recargado (por ejemplo, de la base de datos), o si el El objeto UserInterface solo se puede fusionar en una matriz interna de usuarios/identidad map.

+0

¿No rompería eso la seguridad? – vinnylinux

+0

Depende de la frecuencia con la que se supone que los datos de los usuarios se actualizan (y, como resultado, se actualizan) mientras están conectados. –

+1

http://api.symfony.com/2.7/Symfony/Component/Security/Core/ User/UserProviderInterface.html # method_refreshUser –

Cuestiones relacionadas