| |||
Autenticación unica en Symfony2 buenas, esoty desarrollando una app web con symfony2 y quiero evitar que si usuario A se autenticó en mi sistema mientras que su sesión este activa no pueda venir otro usuario a autenticarse con las mismas credenciales que el usuario A, es decir, que 2 personas no puedan estar autenticadas a la vez con las mismas credenciales,se me ocurrio tener un atributo en la tabla usuario que me diga si está autenticado y cuando se auntentique darle un valor y al desloguearse resetearlo, pero si para salir cierrra el navegador o da atras ya no m funciona, agradecería cualquier sugerencia, saludos |
| ||||
Respuesta: Autenticación unica en Symfony2 cambia a cero el tiempo de vida de la sesion, de esa forma si el usuario cierra el navegador se cierra la sesion.
Código yml:
Ver original |
| |||
Respuesta: Autenticación unica en Symfony2 en realidad eso me sirve a medias, aunque te lo agardezco de todas formas, lo que esoty tratando hacer es la funcionalidad que tienen muchos sitios web de que no permite que 2 usuarios estén conectados a la vez con las mismas credenciales, agradecería cualquier sugerencia |
| ||||
Respuesta: Autenticación unica en Symfony2 La idea que tienes de verificar por una propiedad que te indique si esta con sesion en el sistema te sirve, solo agregale ademas otro campo para mantener un timestamp que se este actualizando con un tiempo pertinente para saber si el usuario esta conectado con su cuenta, de esa forma cuando se haga un nuevo login puedes controlar si están accediendo doble. Por otro lado vas a necesitar usar un manejador de eventos para que cuando el usuario intente hacer login puedas verifiques las condiciones que requieras. Esto lo puedes hacer creando una implementación de la interfaz AuthenticationSuccessHandlerInterface https://github.com/symfony/symfony/b...rInterface.php . En el mismo lugar donde esta la interfaz puedes ver ejemplos para que te orientes a la hora de implementarla, ya que la tengas implementada, la tienes que agregarla como servicio http://symfony.com/doc/current/book/...container.html y posterior a eso le indicas al componente de seguridad que va a utilizar tu implementación agregando la directiva success_handler al archivo security.yml; ejemplo
Código yml:
En el ejemplo la cadena ultra_login_success_handler es el id que le di al handler cuando lo agregue como servicio. Ver original |
| |||
Respuesta: Autenticación unica en Symfony2 Disculpa la molestia de veras que si, y de veras que sería tu solución la forma más sencilla, pero como la aplicación es de videos tendría que tener una lapzo de tiempo muy corto en el que actualice el timestamp y eso no estoy muy seguro que sea factible en cuestiónd e rendimiento, lo que quisiera saber es si existe algun evento que me diga cuando se cerró el navegador o cuando se salió de la aplicación |
| |||
Respuesta: Autenticación unica en Symfony2 Hace un tiempo tuve que resolver el mismo problema. La solución que adopté fue agregar un atributo a la tabla de Usuarios en el cual guardar el session_id (esto no se si es bueno por seguridad, quizás alguien me lo pueda asegurar). Paso siguiente crear un servicio que atienda el evento "login_success" o sea, logueo correcto. En ese servicio se guarda la session_id en la tabla del usuario. Luego crear un nuevo servicio que atienda cada request, y que compare si el session_id almacenado en el momento del request es igual al session_id actual. Si la respuesta es negativa, cerrar la sesión del usuario. Entonces, si un usuario se loguea se guarda su session_id, y puede navegar. Pero si otro se loguea con el mismo nombre de usuario, el session_id se guarda y reemplaza el anterior. Cuando el primer usuario haga un request, el servicio detecta que el session_id no es igual y revoca los permisos del usuario, dejando logueado al segundo. Decime que te parece la solución y te comparto algo del código que tengo. Saludos |
| |||
Respuesta: Autenticación unica en Symfony2 es exactamente lo que estaba buscando te agradecería me compartieras el código que hiciste sobre todo en la parte de los 2 servicios el que se ejecuta cuando se autentica y el que se ejecuat en cada request |
Etiquetas: |