Este foro ya no está activo, así que no puedes publicar nuevas preguntas ni responder a las preguntas existentes.

Seguridad deshabilitada en Symfony

27 de julio de 2015

Hola ¿qué tal? Les consulto algo por si a alguien también le sucedió y me puede dar una mano. Gracias! :)

No sé porque pero desde hace unos días mi login el producción dejó de funcionar! :S Solo anda si antepongo: app_dev.php

Y también noto en la barra de depuración que en la parte de seguridad dice: The segurity is disabled no entiendo como ocurrió ésto, pero si alguien me puede tirar una idea para ir probando alguna posible solución, voy a estar agradecido! :)


Respuestas

#1

El error que te sucede es realmente extraño. Primero dices que el login solo te funciona si pones app_dev.php, por lo que podemos deducir que la seguridad está habilitada en el entorno dev, pero está deshabilitada en el entorno prod.

Sin embargo, el segundo error dice que la barra de depuración web muestra el texto The security is disabled. Ese mensaje solo aparece cuando "el colector de seguridad" no está activado. Solo hay dos causas comunes para ello: 1) has deshabilitado el colector en la configuración, 2) el bundle SecurityBundle está desactivado.

El problema es que el primer error contradice al segundo: si el bundle SecurityBundle está desactivado en dev (como sugiere el segundo error) entonces no te puede funcionar el login al poner el app_dev.php (como sugiere el primer error).

¿Podrías decirnos como tienes registrado el bundle SecurityBundle en el archivo app/AppKernel.php?

@javiereguiluz

27 julio 2015, 17:26
#2

Hola, muchas gracias por responder, acá te copio el cod.

public function registerBundles()
    {
        $bundles = array(
            new Symfony\Bundle\FrameworkBundle\FrameworkBundle(),
            new Symfony\Bundle\SecurityBundle\SecurityBundle(),
            new Symfony\Bundle\TwigBundle\TwigBundle(),
            new Symfony\Bundle\MonologBundle\MonologBundle(),
            new Symfony\Bundle\SwiftmailerBundle\SwiftmailerBundle(),
            new Symfony\Bundle\AsseticBundle\AsseticBundle(),
            new Doctrine\Bundle\DoctrineBundle\DoctrineBundle(),
            new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle(),
            new EM\MainBundle\MainBundle(),
            new EM\UsuariosBundle\UsuariosBundle(),
            new EM\AdministracionBundle\AdministracionBundle(),
            new EM\EventosBundle\EventosBundle(),
            new EM\ReservasBundle\ReservasBundle(),
            new EM\InscripcionesBundle\InscripcionesBundle(),
            new HWI\Bundle\OAuthBundle\HWIOAuthBundle(),            
        );
 
        if (in_array($this->getEnvironment(), array('dev', 'test'))) {
            $bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle();
            $bundles[] = new Sensio\Bundle\DistributionBundle\SensioDistributionBundle();
            $bundles[] = new Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle();
        }
 
        return $bundles;
    }

Tienes razón, es decir ahora pude comprobar que el login por lo menos en mi local funciona con o sin: app_dev.php. Pero por algún motivo, cuando me logueo con app_dev.php sigue apareciendo The security is disabled en la barra de depuración! :S

Con respecto a los puntos:

1) Has deshabilitado el colector en la configuración,

2) El bundle SecurityBundle está desactivado.

¿Me podrías indicar como corroborar si está deshabilitado? he googleado un poco pero no logro encontrar nada! :S

@MrXXX0323

28 julio 2015, 16:28
#3

Para deshabilitarlo hay que definir un servicio y cambiar la prioridad del coelctor y hacer no se cuántas cosas más, así que es imposible hacerlo "sin querer".

Mi consejo sería que hicieras dos cosas: 1) comprobar que todo está bien configurado; 2) analizar los mensajes de error.

Para comprobar que todo está bien configurado, ejecuta si puedes el siguiente comando y mira a ver si te sale algún error o algún aviso:

$ php app/check.php

Para analizar los mensajes de error, mira en el archivo app/logs/dev.log o app/logs/prod.log a ver si ves algún mensaje relacionado con la seguridad.

Por último, si tu versión de Symfony no es muy antigua, puedes activar el bundle DebugBundle añadiendo lo siguiente:

if (in_array($this->getEnvironment(), array('dev', 'test'))) {
    // ...
    $bundles[] = new Symfony\Bundle\DebugBundle\DebugBundle();
}

Luego en tu aplicación puedes hacer dump($this->getUser()) dentro de un controlador para inspeccionar el contenido de esa variable.

@javiereguiluz

28 julio 2015, 16:45
#4

Para darle un cierre a esta pregunta, hice lo que me dijiste javier y me salia un error que decía:

No se puede cargar dinamicamente request.

y la solución fue:

Yo tenía definido el siguiente servicio en el config.yml

services:
  user.provider.users:
      class: EM\UsuariosBundle\Provider\Provider
      arguments: [@session, @doctrine]   
      calls:
            - [setRequest , ["@service_container"]]

En donde comenté el request.

services:
  user.provider.users:
      class: EM\UsuariosBundle\Provider\Provider
      arguments: [@session, @doctrine]
      #calls:
      #      - [setRequest , ["@service_container"]]

Y ahora cuando me logueo ya me vuelve a aparecer en la barra de debug el usuario logueado! :D

@MrXXX0323

12 agosto 2015, 22:24