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

[SOLUCIONADO] Problema con Login

Estas en el tema de Problema con Login en el foro de Symfony en Foros del Web. Estoy intentando hacer un formulario de login y no puedo hacer que funcione, busque en google varias soluciones pero no me responde nada y la ...
  #1 (permalink)  
Antiguo 03/12/2013, 14:51
 
Fecha de Ingreso: enero-2013
Ubicación: Santa Fe, VT
Mensajes: 68
Antigüedad: 11 años, 3 meses
Puntos: 2
Problema con Login

Estoy intentando hacer un formulario de login y no puedo hacer que funcione, busque en google varias soluciones pero no me responde nada y la verdad es que no entiendo por que no funciona, intente hacerlo como el Cookbook dice pero no funciona

Mi codigo:

Controlador y metodo del login

Código PHP:
namespace PlayIBundleController;

use 
SymfonyBundleFrameworkBundleControllerController;
use 
SymfonyComponentHttpFoundationRequest;
use 
SymfonyComponentSecurityCoreSecurityContext;

class 
SecurityController extends Controller
{

    public function 
loginAction() 
    {
        
$request $this->getRequest();
        
$session $request->getSession();

        
// obtiene el error de inicio de sesión si lo hay
        
if ($request->attributes->has(SecurityContext::AUTHENTICATION_ERROR)) {
            
$error $request->attributes->get(
                
SecurityContext::AUTHENTICATION_ERROR
            
);
        } else {
            
$error $session->get(SecurityContext::AUTHENTICATION_ERROR);
            
$session->remove(SecurityContext::AUTHENTICATION_ERROR);
        }

        return 
$this->render(
            
'PlayIBundle:Security:login.html.twig',
            array(
                
// último nombre de usuario ingresado
                
'last_username' => $session->get(SecurityContext::LAST_USERNAME),
                
'error'         => $error,
            )
        );
    }
    


El security.yml

Código YML:
Ver original
  1. security:
  2.     encoders:
  3.         Symfony\Component\Security\Core\User\User: plaintext
  4.        
  5.         Play\IBundle\Entity\User: sha512
  6.  
  7.     role_hierarchy:
  8.         ROLE_ADMIN:       ROLE_USER
  9.         ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]
  10.  
  11.     providers:
  12.         main:
  13.             entity: { class: Play\IBundle\Entity\User, property: username }
  14.  
  15.  
  16.     firewalls:
  17.         dev:
  18.             pattern:  ^/(_(profiler|wdt)|css|images|js)/
  19.             security: false
  20.         login_firewall:
  21.             pattern:    /login$
  22.             security: false
  23.        
  24.         secured_area:
  25.             pattern:    ^/user/manager
  26.             anonymous: ~
  27.             form_login:
  28.                 login_path: login
  29.                 check_path: login_check
  30.                
  31.             logout:
  32.                 path:   _logout
  33.                 target: /
  34.             #anonymous: ~
  35.             #http_basic:
  36.             #    realm: "Secured Demo Area"
  37.            
  38.          
  39.            
  40.  
  41.     access_control:
  42.         - { path: ^/user/manager/login$, roles: IS_AUTHENTICATED_ANONYMOUSLY }
  43.         - { path: ^/login$, roles: IS_AUTHENTICATED_ANONYMOUSLY }
  44.         - { path: ^/login_check$, roles: IS_AUTHENTICATED_ANONYMOUSLY }
  45.         - { path: ^/user/manager, roles: ROLE_USER }
  46.         #- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY, requires_channel: https }

y el routing.yml

Código YML:
Ver original
  1. play_i_homepage:
  2.     pattern:  /hello/{name}
  3.     defaults: { _controller: PlayIBundle:Default:index }
  4.  
  5. registro:
  6.     pattern: /registrarse
  7.     defaults: { _controller: PlayIBundle:Default:registro }
  8.    
  9. account_create:
  10.     pattern: /cuenta_creada
  11.     defaults: { _controller: PlayIBundle:Default:creado }
  12.    
  13. login:
  14.     pattern: /login
  15.     defaults: {_controller: PlayIBundle:Security:login }
  16.    
  17. login_check:
  18.     pattern: /login_check
  19.    
  20. _user_manager:
  21.     pattern: /user/manager
  22.     defaults: {_controller: PlayIBundle:User:Cpanel }
  23.    
  24. _logout:
  25.     pattern: /logout

El cookBook dice que el Login_check debe estar detras de un firewall, esa parte es la que no entiendo a que se refiere, intente hacerlo por mi mismo pero no pude por eso tube que abrir el mensaje para saber si alguien puede aclararme esta duda
  #2 (permalink)  
Antiguo 04/12/2013, 08:59
 
Fecha de Ingreso: enero-2013
Ubicación: Santa Fe, VT
Mensajes: 68
Antigüedad: 11 años, 3 meses
Puntos: 2
Respuesta: Problema con Login

ya lo pude resolver, al parecer el login y el check_login tienen que estar dentro del pattern que protege el firewall quedando asi:

Código:
security:
    encoders:
        Symfony\Component\Security\Core\User\User: plaintext
        
        Play\IBundle\Entity\User: sha512

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

    providers:
        main:
            entity: { class: Play\IBundle\Entity\User, property: username }


    firewalls:
        dev:
            pattern:  ^/(_(profiler|wdt)|css|images|js)/
            security: false
        login_firewall:
            pattern:    ^/user/manager/login$
            security: false
        
        secured_area:
            pattern:    ^/user/manager
            form_login: 
                login_path: login
                check_path: login_check
                
            logout:
                path:   _logout
                target: /
            #anonymous: ~
            #http_basic:
            #    realm: "Secured Demo Area"
            
          
            

    access_control:
        #- { path: ^/user/manager/login$, roles: IS_AUTHENTICATED_ANONYMOUSLY }
        #- { path: ^/login$, roles: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/user/manager, roles: ROLE_USER }
y en el routing agregar en los patterns de login y login check el /user/manager ( ej: /user/manager/login, /user/manager/login_check


La linea login_firewall tiene que estar para que funcione



Mi duda ahora es como hacer para evitar que el usuario vuelva a la pagina de Login para no volverse a loguear

EDIT:

pit fails 4:
Los firewall no comparten seguridad, todo resuelto

Última edición por molinasergio91; 06/12/2013 a las 00:25

Etiquetas: login
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 14:58.