Symfony-2.0错误登录重定向网址

时间:2012-03-08 20:34:44

标签: php login symfony

我的symfony 2.0应用程序出了问题。我无法通过谷歌找到合适的解决方案所以我在这里:)

我试图创建一个登录表单。 这是我的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

登录表单显示正确,但如果我提交表单,则应用程序会重定向回登录表单并且网址已更改为

  

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

我没有任何错误或其他任何错误。我不明白为什么我没有错误以及为什么网址改为此。

1 个答案:

答案 0 :(得分:2)

我认为您忘记在<form>标记中执行操作,如果登录成功,您需要告诉重定向的位置。

另一件事我注意到你已经在routing.yml和security.yml中给出/登录你给了/ admin / login。

第三个是security.yml中的login_path:/ admin / login_check和您给出的routing.yml

/ login_check。

在routing.yml

中更改/登录/ admin / login

在routing.yml中将/ login_check更改为/ admin / login_check

<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>

希望这有帮助。