Foros del Web » Programando para Internet » PHP » Symfony »

[SOLUCIONADO] Login symfony2.1 en entorno de producción!

Estas en el tema de Login symfony2.1 en entorno de producción! en el foro de Symfony en Foros del Web. Hola a todos! Mi problema es el siguiente... Seguí la guía de Symfony2 en maestros del web para hacer mi aplicación web con dicho framework. ...
  #1 (permalink)  
Antiguo 30/01/2013, 19:05
 
Fecha de Ingreso: septiembre-2012
Mensajes: 13
Antigüedad: 11 años, 8 meses
Puntos: 0
Login symfony2.1 en entorno de producción!

Hola a todos!
Mi problema es el siguiente...
Seguí la guía de Symfony2 en maestros del web para hacer mi aplicación web con dicho framework. Por diferentes razones, abandoné ese proyecto y ahora lo empezé de nuevo con Symfony2.1. Sigo utilizando el mismo sistema de login de la guía (con unas pequeñas modificaciones), el asunto es que en el entorno de desarrollo (dev) todo funciona correctamente pero al utiizar la aplicación en el entorno de producción (prod) no sirve el login. Siempre redirecciona a "login_check" y ahí se queda, no hace más nada...

El controlador de seguridad sí es igual al de la guía. Y este es mi security.yml

Código:
security:
    encoders:
        Reda\RedaBundle\Entity\Usuario:
            algorithm: sha512
            encode-as-base64: true
            iterations: 10

    providers:
        user_db:
            entity: { class: Reda\RedaBundle\Entity\Usuario, property: username }

    firewalls:
        dev:
            pattern:  ^/(_(profiler|wdt)|css|images|js)/
            security: false

        login:
            pattern:  ^/admin/login$
            security: false

        secured_area:
            pattern: ^/
            form_login:
                check_path: /login_check
                login_path: /login
            logout:
                path: /logout
                target: /
            anonymous: ~
            #http_basic:
            #    realm: "Secured Demo Area"

    access_control:
        - { path: ^/admin, roles: [ROLE_ADMIN] }
  #2 (permalink)  
Antiguo 31/01/2013, 07:17
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Login symfony2.1 en entorno de producción!

hola, yo soy el autor de ésa parte de la guía, debes revisar estos puntos:

-¿incluiste el .htaccess en el document_root del hosting?
-borra el directorio app/cache y dale permisos de escritura

revisa los logs en app/logs allí obtendrás detalladamente el error, si el archivo está muy grande, realiza una backup, borralo y vuelve a intentar para que obtengas el error exacto al tratar de loguear.

veo que usas la versión 2.1, en mis pruebas utilice la 2.0 y no creo que existan muchos cambios, pero en la nueva versión hay un cambio importante en el manejo de formularios, desgraciadamente no tengo tiempo de hacer las correcciones, a lo sumo sería aplicar manualmente el algoritmo del hash y actualizar el hash y salt en la base de datos para que el login funcione si es que ésa parte no cambió
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 31/01/2013, 08:56
 
Fecha de Ingreso: septiembre-2012
Mensajes: 13
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: Login symfony2.1 en entorno de producción!

Hola, Maycol!

Con respecto al .htacces, lo que tengo es esto:
Código:
<IfModule mod_rewrite.c>
    RewriteEngine On

    #<IfModule mod_vhost_alias.c>
    #    RewriteBase /
    #</IfModule>

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ app.php [QSA,L]
</IfModule>
No sé dónde debo agregar lo que me dices. Aunque el problema también se presenta en la versión que tengo en mi servidor local. (WampServer2 en Windows 8)

El cache ya lo borré y también tiene permisos de escritura, fue lo primero que se me ocurrió pero nada.

Con el archivo de logs no tuve suerte porque en sí no se produce un error, sólo redirecciona a "login_check" y se queda ahí com si cargara una página en blanco.

Gracias por la ayuda. Espero me puedas seguir colaborando!
  #4 (permalink)  
Antiguo 31/01/2013, 09:59
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Login symfony2.1 en entorno de producción!

entonces utiliza el archivo de check de symfony2 para verificar que cumplas con todos los requisitos, yo recomiendo xampp para windows en su última versión.

lo raro es que te funcione el entorno de desarrollo y no el de producción.
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #5 (permalink)  
Antiguo 31/01/2013, 10:31
 
Fecha de Ingreso: septiembre-2012
Mensajes: 13
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: Login symfony2.1 en entorno de producción!

Ya revisé y todo está OK a excepción de un par de advertencias en las recomendaciones opcionales (PHP Acelerator...)

Yo también lo noto raro. Si funciona en el dev debería funcionar en el prod.

Otra cosa que noté fue que en el security.yml, tengo:
Código:
login:
            pattern:  ^/admin/login$
            security: false
Al parecer, por descuido olvidé corregir el pattern y lo dejé como está en la guía. Creo que lo lógico es quitar el "admin" de la ruta para que coincida con el resto de la configuración y las rutas que están específicadas en el routing.yml. Pero al borrar "admin" me manda el siguien error al intentar entrar en la página de login:
Cita:
An exception has been thrown during the rendering of a template ("The security context contains no authentication token. One possible reason may be that there is no firewall configured for this URL.") in "RedaRedaBundle:Seguridad:login.html.twig".
¿Ese detalle de la configuración tendrá algo que ver?
  #6 (permalink)  
Antiguo 31/01/2013, 11:12
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Login symfony2.1 en entorno de producción!

borra la caché de symfony, recuerda que el patrón admin es genérico y debe coincidir con las rutas válidas de tu controlador de seguridad
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #7 (permalink)  
Antiguo 31/01/2013, 20:50
 
Fecha de Ingreso: septiembre-2012
Mensajes: 13
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: Login symfony2.1 en entorno de producción!

Ando con problemas en mi conexión a internet.

Ese último error que mencioné, ya lo solucioné. Era que estaba validando un rol en la plantilla de login y como el firewall estaba desactivado para esa ruta, me mandabra ese eror.

Sin embargo, el problema en el entorno de producción continúa. He borrado la cache, revisado todo y nada. No sé qué más me falta por revisar.
Y me sigue rompiendo la cabeza que funcione en el entorno de desarrollo y no en el de producción.

Este es el link de la plataforma: [URL="http://aves.edu.co/reda/web/"]http://aves.edu.co/reda/web/[/URL]

Puedes probar con el usuario: hfabra, contraseña:hfabra y ver el problema.

Sólo pasa cuando se usa un usuario válido, si se intenta iniciar sesión con datos errados, los valida y manda el error "Bad Credentials".
  #8 (permalink)  
Antiguo 01/02/2013, 07:58
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Login symfony2.1 en entorno de producción!

de nada me sirve entrar sin ver el resultado de los log's, es como tratar de ver el premio secreto de una caja de cereales sin abrirla

el error Bad Credentials se debe a que no empata las credenciales, en este caso ¿te aseguraste de crear los roles en la tabla de rol y asignárselos al usuario en cuestión?
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #9 (permalink)  
Antiguo 01/02/2013, 08:17
 
Fecha de Ingreso: septiembre-2012
Mensajes: 13
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: Login symfony2.1 en entorno de producción!

La idea es que vieras donde se queda la aplicación al intentar hacer login. Porque no puedo darte un error detallado. En el archivo logs no se genera ningún registro por esa acción. Sólo queda una página en blanco en la ruta "login_check" y ya. No hay señales de errores por ningún lado. No sé porqué se queda ahí!

Lo que dije de Bad Credentials es para hacer ver que la aplicación está haciendo la validación correctamente en el "login_check" cuando se usa un usuario que no existe en la base de datos. El problema está al usar uno que sí está registrado.

Los roles están bien, como comenté, en el entorno de desarrollo funciona perfectamente. Puedo hacer login con todos, el firewall hace las restricciones según los roles, todo, absolutamente todo funciona como debería.
Lo único que agregué a la entidad Rol, fue otra propiedad para almacenar el nombre del rol sin el prefijo "ROLE_", sólo eso!

Pero en el entorno de producción pasa eso que puedes apreciar en la url que te pasé.

Ya hasta me dan ganas de hacer el downgrade a Symfony2! :/

Última edición por joelzm; 01/02/2013 a las 08:27
  #10 (permalink)  
Antiguo 01/02/2013, 08:42
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Login symfony2.1 en entorno de producción!

Primero, comprobaste los BC breaks que hay entre la versión 2.0 y 2.1 ?, segundo, porque no utilizas FOSUserBundle ?(estándar de facto para el manejo de usuarios)
__________________
http://es.phptherightway.com/
thats us riders :)
  #11 (permalink)  
Antiguo 01/02/2013, 08:56
 
Fecha de Ingreso: septiembre-2012
Mensajes: 13
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: Login symfony2.1 en entorno de producción!

Cita:
Iniciado por masterpuppet Ver Mensaje
Primero, comprobaste los [URL="https://github.com/symfony/symfony/blob/master/UPGRADE-2.1.md"]BC breaks[/URL] que hay entre la versión 2.0 y 2.1 ?, segundo, porque no utilizas [URL="https://github.com/FriendsOfSymfony/FOSUserBundle"]FOSUserBundle[/URL] ?(estándar de facto para el manejo de usuarios)
1. Sí comprobé todos los cambios que hay de una versión a otra. De hecho en el sistema de login, no encontré nada significativo que los diferencie. Y corroboré esa parte en la documentación oficial [URL="http://symfony.com/doc/current/book/security.html#using-a-traditional-login-form"]http://symfony.com/doc/current/book/security.html#using-a-traditional-login-form[/URL]

2. Simplemente, como soy nuevo en symfony, quise aprender como era todo el proceso antes de usar un bundle que me facilitara el trabajo. Pero también es una opción. Seguiré intentando un rato, sino ese será el camino a seguir. Gracias!
  #12 (permalink)  
Antiguo 01/02/2013, 09:05
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Login symfony2.1 en entorno de producción!

Te entiendo, y lamentablemente estas en un punto que es difícil ayudarte, vas a tener que debugear y ver que esta sucediendo, e independientemente de que soluciones o no el problema te sugiero que utilices FOSUserBundle.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #13 (permalink)  
Antiguo 01/02/2013, 13:00
 
Fecha de Ingreso: septiembre-2012
Mensajes: 13
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: Login symfony2.1 en entorno de producción!

Bueno, señores...
Si alguien más llega a experimentar el mismo problema, mi conclusión es que: hasta donde llegaron mis esfuerzos, no hay solución. Lo que deben hacer es utilizar el FOSUserBundle. Ya lo implementé y el login funciona correctamente en ambos entornos.

Ahora sólo debo buscar como implementar lo de los roles desde otra entidad y que sólo permita un rol por usuario. Si tienen algún link al respecto, se los agradezco.

Maycol, Masterpuppet, Muchísimas gracias por su ayuda!
  #14 (permalink)  
Antiguo 01/02/2013, 13:25
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Login symfony2.1 en entorno de producción!

Te dejo una referencia http://blog.jmoz.co.uk/symfony2-fosu...-role-entities no lo he probado pero teniendo en cuenta la serie de test que realizo el OP parece fiable, hay alguna razón en especial para que los roles sean entidades ?, sobre un solo rol por usuario, ten en cuenta que con algo así pierdes la herencia de roles, de todas formas implementarlo no debería ser mas que redefinir los mutators para que solo permitan un rol.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #15 (permalink)  
Antiguo 01/02/2013, 14:01
 
Fecha de Ingreso: septiembre-2012
Mensajes: 13
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: Login symfony2.1 en entorno de producción!

Lo solucioné agregando una propiedad para el rol con su respectiva relacion y en el método getRoles() retorno el valor de esa propiedad.

Emmm... digamos que lo de los roles en una entidad es más por inercia, como ya lo venía trabajando así!
Además a cada rol le asigno privilegios que permiten realizar diferentes acciones dentro de la plataforma. Así desde la vista de admin, puedo modificar los privilegios de cada usuario. O al menos así lo veo yo!
  #16 (permalink)  
Antiguo 01/02/2013, 14:32
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Login symfony2.1 en entorno de producción!

mmm, nada te impide hacer lo que mencionas con los roles como array tal cual viene FOSUserBundle, de hecho lo puedes ver funcionando en SonataAdminBundle + SonataUserBundle(integración de FOSUserBundle con Sonata)

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #17 (permalink)  
Antiguo 01/02/2013, 14:40
 
Fecha de Ingreso: septiembre-2012
Mensajes: 13
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: Login symfony2.1 en entorno de producción!

No sabía que existían esos bundles. Los tendré en cuenta! Gracias...
  #18 (permalink)  
Antiguo 01/02/2013, 17:51
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Login symfony2.1 en entorno de producción!

Antes de hacer nada siempre deberías primero buscar en knpbundles.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #19 (permalink)  
Antiguo 02/02/2013, 13:48
 
Fecha de Ingreso: septiembre-2012
Mensajes: 13
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: Login symfony2.1 en entorno de producción!

Cita:
Iniciado por joelzm Ver Mensaje
Bueno, señores...
Si alguien más llega a experimentar el mismo problema, mi conclusión es que: hasta donde llegaron mis esfuerzos, no hay solución. Lo que deben hacer es utilizar el FOSUserBundle. Ya lo implementé y el login funciona correctamente en ambos entornos.

Ahora sólo debo buscar como implementar lo de los roles desde otra entidad y que sólo permita un rol por usuario. Si tienen algún link al respecto, se los agradezco.

Maycol, Masterpuppet, Muchísimas gracias por su ayuda!
Hago la correción... utilizar FOSUserBundle fue inutil... funcionó por un tiempo solamente. Quedo de nuevo en lo mismo: sin saber qué hacer... :S
  #20 (permalink)  
Antiguo 05/02/2013, 18:55
 
Fecha de Ingreso: septiembre-2012
Mensajes: 13
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: Login symfony2.1 en entorno de producción!

De nuevo por aquí!

Les comento que solucioné el inconveniente de la siguiente forma. En el archivo app.php, modifiqué la siguiente línea:
Código:
$kernel = new AppKernel('prod', false);
Cambié false por true y quedó funcionando correctamente en el entorno de producción. Aunque no sé qué implique cambiar el valor de ese parámetro. Si me pueden dar una idea, les agradezco.

Por lo pronto, es la única solución que encontré y trabajaré así para mis propósitos.
Gracias de nuevo por su ayuda!
  #21 (permalink)  
Antiguo 05/02/2013, 19:07
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Login symfony2.1 en entorno de producción!

Estas activando el debug en producción..., estas seguro que tienes los permisos correctos en app/cache y app/logs ?, probaste eliminar a mano la cache y logs (rm -rf app/cache/* app/logs/*) antes de ejecutar php app/console cache:clear --env=prod ?
__________________
http://es.phptherightway.com/
thats us riders :)
  #22 (permalink)  
Antiguo 05/02/2013, 19:29
 
Fecha de Ingreso: septiembre-2012
Mensajes: 13
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: Login symfony2.1 en entorno de producción!

Gracias masterpuppet, por fin encontré el error real.
Al ejecutar php app/console cache:clear --env=prod, me mandó un error que decía: Class Reda\RedaBundle\Entity\Constraints\File does not exist.

El problema era que en una propiedad de tipo File en una entidad, había colocado en el set que el parametro era del tipo File que está en Constraints... De ese error me había dado cuenta pero olvidé corregirlo en otra entidad y por eso era el problema!

Ahora sí funciona sin activar el debug en el entorno de producción! :D

Muchas gracias!
  #23 (permalink)  
Antiguo 25/06/2013, 15:05
 
Fecha de Ingreso: junio-2013
Mensajes: 1
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Login symfony2.1 en entorno de producción!

Buenas lo pongo aqui , por si alguien lo necesita, ya que a mi tambien me el mismo problema pero era por tener la pagina en 1and1 que tiene los servidores compartidos corriendo con "CGi".

[URL="http://stackoverflow.com/questions/5989201/symfony2-http-basic-security-configuration-problem"]http://stackoverflow.com/questions/5989201/symfony2-http-basic-security-configuration-problem[/URL]

Un Saludo y suerte!

Etiquetas: login, php
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:25.