Symfony-2.0 неверный URL перенаправления входа - PullRequest
0 голосов
/ 09 марта 2012

У меня проблема с моим приложением symfony 2.0.Я не смог найти правильное решение через Google, поэтому я здесь :)

Я попытался создать форму входа.Это мой файл security.yml:

security:
encoders:
    Domicon\AdminBundle\Entity\User:
        algorithm: sha1
        encode_as_base64: false
        iterations: 10

providers:
    admin:
        entity: { class: DomiconAdminBundle:User, property: email }

role_hierarchy:
    ROLE_ADMIN:       ROLE_USER
    ROLE_SUPER_ADMIN: ROLE_ADMIN

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

    admin_area:
        pattern:    ^/admin.*
        form_login:
            check_path: /admin/login_check
            login_path: /admin/login
        logout:
            path:   /admin/logout
            target: /admin
        anonymous: ~
        logout: true
        http_basic:
            realm: "Secured Admin Area"
        provider: admin 

access_control:
    - { path: ^/admin/login.*, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/admin.*, role: ROLE_ADMIN }

Код моего контроллера выглядит как код в symfony 2.0 docs http://symfony.com/doc/current/book/security.html#using-a-traditional-login-form

Мои маршруты

DomiconAdminBundle_login:
pattern:  /login
defaults: { _controller: DomiconAdminBundle:User:login }

DomiconAdminBundle_login_check:
    pattern:   /login_check

Форма входа отображается правильно, но если я отправлю форму, приложение перенаправит обратно в форму входа, и URL-адрес изменится на

http://localhost/Domicon/web/app_dev.php/admin/login?_username=admin&_password=pass

Я не получил ни ошибки, ни чего-либо еще.Я не понимаю, почему я не получаю ошибку и почему URL-адрес изменился на это.

1 Ответ

2 голосов
/ 23 апреля 2012

Я думаю, что вы забыли указать действие в теге <form>, и вам нужно указать, куда перенаправить, если вход успешен.

И еще одна вещь, которую я заметил, что вы дали / вход в систему при маршрутизации.yml и в security.yml вы указали /admin/login.

Третий - логин-путь: / admin / login_check в security.yml и в routing.yml, который вы дали

/ login_check

Изменить / войти в / admin / войти в routing.yml

Изменить / login_check на / admin / login_check в routing.yml

<form action="{{ path('DomiconAdminBundle_login_check') }}" method="post">
  <div>  
    <label for="username">Username:</label>
    <input type="text" id="username" name="_username" value="{{ last_username }}" />
    </div>
  <div> 
    <label for="password">Password:</label>
    <input type="password" id="password" name="_password" />
</div>
    {#
        If you want to control the URL the user is redirected to on success #}
        <input type="hidden" name="_target_path" value="/yourredirectpath" />


    <input type="submit" name="login" value="Submit" />
</form>

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...