Soy nuevo en Symfony2 y estoy tratando de crear un registro de base + de inicio de sesión del sistema. Así, con la ayuda de la Symfony2 documentación que he creado esta seguridad.yml:

security:
    encoders:
        TestCompany\InternetBundle\Entity\Member:
            algorithm:        sha1
            encode_as_base64: false
            iterations:       1

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

    providers:
        administrators:
            entity: { class: TestCompanyInternetBundle:Member, property: username }

    firewalls:
        admin_area:
            pattern:    ^/admin
            anonymous: ~
            form_login:
                login_path:  /login
                check_path:  /login_check

    access_control:
        - { path: ^/admin, roles: ROLE_ADMIN }

y he utilizado este tipo de ruta: la

login_check:
    pattern:   /login_check
login:
    pattern:  /login
    defaults: { _controller: TestCompanyInternetBundle:Admin:login }

Según http://symfony.com/doc/current/book/security.html#using-a-traditional-login-form NO necesito implementar un controlador para el login_check ruta. Sin embargo, Symfony devuelve este error para mí:

Unable to find the controller for path "/login_check". Maybe you forgot to add the matching route in your routing configuration?

¿Ves lo que yo pude haber hecho mal aquí? La página de inicio de sesión es casi una copia exacta de la que se utiliza en la documentación. El error se produce en la página: http://localhost/SymfonyTest/web/app_dev.php/login_check, que es la página que se envían después de usar el formulario de inicio de sesión.

InformationsquelleAutor teuneboon | 2012-06-02

3 Comentarios

  1. 3

    http://symfony.com/doc/current/book/security.html#using-a-traditional-login-form

    Asegúrese de /login_check está detrás de un firewall.

    Por lo tanto, en el ejemplo, se ha especificado un prefijo de /admin para su área de seguridad, por lo que su inicio de sesión, compruebe la ruta debe tener también ese prefijo por ejemplo, /admin/login_check

    A continuación, asegúrese de que su check_path URL (por ejemplo, /login_check) está detrás de un cortafuegos que está utilizando para el formulario de inicio de sesión (en este ejemplo, el único firewall coincide con todas las Url, incluyendo /login_check). Si /login_check no coincide con ningún firewall, usted recibirá un Incapaces de encontrar el controlador para la ruta «/login_check» la excepción.

    Ejemplo security.yml de configuración:

    firewalls:
        dev:
            pattern:  ^/(_(profiler|wdt)|css|images|js)/
            security: false
    
        secured_area:
            pattern:    ^/
            form_login:
                login_path: /login
                check_path: /login_check
            logout:
                path:   /demo/secured/logout
                target: /demo/
            anonymous: ~
    
        ....
    
        access_control:
            - { path: ^/admin, roles: ROLE_ADMIN }
  2. 1

    Yo le recomiendo que utilice el FOSUserBundle como esta parece ser la forma más rápida para hacer lo que te gustaría hacer: FOSUserBundle

    De instalación es muy sencillo y le permitirá obtener de su aplicación de trabajo en un lapso muy corto de tiempo. Buena suerte!

    EDICIÓN:

    Podría publicar su controlador TestCompanyInternetBundle:Admin:inicio de sesión? ¿Usted controlador de extender el controlador de seguridad en todos los?

  3. 0

    También debe incluir su seguridad.yml. Asegúrese de tener:

    firewalls:
        login_firewall:
            pattern:    ^/login$
            anonymous:  ~

    en su seguridad.yml. Este es un error común.

Dejar respuesta

Please enter your comment!
Please enter your name here