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

[SOLUCIONADO] Login sin recordar el usuario logueado (Error)

Estas en el tema de Login sin recordar el usuario logueado (Error) en el foro de Symfony en Foros del Web. Hola, estoy intentando con Symfony hacer un login de usuarios, en principio parece como si funcionara bien, tiene su formulario de login, si pongo mal ...
  #1 (permalink)  
Antiguo 25/04/2013, 12:22
Avatar de jhg
jhg
 
Fecha de Ingreso: marzo-2012
Mensajes: 96
Antigüedad: 12 años, 1 mes
Puntos: 1
Login sin recordar el usuario logueado (Error)

Hola, estoy intentando con Symfony hacer un login de usuarios, en principio parece como si funcionara bien, tiene su formulario de login, si pongo mal el usuario y la clave me vuelve a mandar al formulario diciendome que las credenciales estan mal, y si las pongo bien me redirige al inicio de la web, hasta ahi bien, el problema es que en la barra de depuración del entorno de desarrollo siempre aparece como sin usuario autenticado, y si intento en la pagina principal obtener el usuario para mostrar el nombre de usuario logueado al inicio, para ver si esta logueandome, pues nunca me aparece, es como si me autenticara bien pero luego olvidara las credenciales, no entiendo por que sucede. ¿Alguna idea?

Estoy primero especificando los usuarios en el archivo de configuracion, pues es la primera vez que uso Symfony, pero luego la idea es que cuando esto funcione pasar a usar usuarios en la base de datos.

Este es el archivo security.yml:
Código:
jms_security_extra:
    secure_all_services: false
    expressions: true

security:
    encoders:
        Symfony\Component\Security\Core\User\User: plaintext

    role_hierarchy:
        ROLE_ADMIN:       ROLE_USER
        ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]

    providers:
        in_memory:
            memory:
                users:
                    user:  { password: userpass, roles: [ 'ROLE_USER' ] }
                    admin: { password: adminpass, roles: [ 'ROLE_ADMIN' ] }

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

        login:
            pattern:  ^/login$
            security: false

        secured_area:
            pattern:    ^/(secured/.*|login_check)
            form_login:
                check_path: /login_check
                login_path: /login
            logout:
                path:   /logout
                target: /
            #anonymous: ~
            #http_basic:
            #    realm: "Secured Demo Area"

    access_control:
        #- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY, requires_channel: https }
Y este el archivo de route.yml:
Código:
compartida_compartida:
    resource: "@CompartidaCompartidaBundle/Resources/config/routing.yml"
    prefix:   /

login_check:
    pattern:  /login_check

login:
    pattern:  /login
    defaults: { _controller:CompartidaCompartidaBundle:Security:login }

logout:
    pattern: /logout
El controlador del formulario de login:
Código:
<?php

namespace Compartida\CompartidaBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\Security\Core\SecurityContext;

class SecurityController extends Controller
{
  public function loginAction()
  {
    $peticion = $this->getRequest();
    $sesion = $peticion->getSession();
    // obtiene el error de inicio de sesión si lo hay
    if ($peticion->attributes->has(SecurityContext::AUTHENTICATION_ERROR)) {
      $error = $peticion->attributes->get(SecurityContext::AUTHENTICATION_ERROR);
    } else {
      $error = $sesion->get(SecurityContext::AUTHENTICATION_ERROR);
    }
    return $this->render('CompartidaCompartidaBundle:Security:login.html.twig', array(
      // el último nombre de usuario ingresado por el usuario
      'ultimo_nombreusuario' => $sesion->get(SecurityContext::LAST_USERNAME),
      'error' => $error,
    ));
  }
}

?>
La plantilla del formulario de login:
Código:
{% extends 'CompartidaCompartidaBundle::base.html.twig' %}

{% block main %}
{% if error %}
<p>{{ error.message }}</p>
{% endif %}
<form action="{{ path('login_check') }}" method="post">
<label for="nombreusuario">Nombre:</label>
<input type="text" id="nombreusuario" name="_username" value="{{ ultimo_nombreusuario }}" />
<label for="password">Password:</label>
<input type="password" id="password" name="_password" />
<input type="submit" name="login" />
</form>
{% endblock %}

{% block login %}{% endblock %}
__________________
JHG
  #2 (permalink)  
Antiguo 25/04/2013, 13:00
Avatar de jhg
jhg
 
Fecha de Ingreso: marzo-2012
Mensajes: 96
Antigüedad: 12 años, 1 mes
Puntos: 1
Respuesta: Login sin recordar el usuario logueado (Error)

Me respondo a mi mismo por si a alguien más le pasa lo mismo, simplemente quite el "secured/" del archivo security.yml dejando el resto de esa misma linea igual y se soluciono al meter todo el sitio tras el cortafuegos.
__________________
JHG

Etiquetas: login, logueado, recordar, usuario
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 04:01.