登录后symfony 2安全重定向

Ale*_*tau 4 php acl symfony

我有下一个security.yml:

security:
    encoders:
        Test\BackEndBundle\Entity\User:
            algorithm: sha512
            encode-as-base64: true
            iterations: 10

    providers:
        main:
            entity: { class: TestBackEndBundle:User, property: username }

    firewalls:
        main:
            pattern: /.*
            form_login:
                check_path: _security_check
                login_path: _security_login
                default_target_path: homepage
            logout: true
            security: true
            anonymous: true

    access_control:
        - { path: ^/service, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/login, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: /.*, roles: {ROLE_PARTNER, ROLE_ADMIN} }
Run Code Online (Sandbox Code Playgroud)

而下一个路由:

homepage:
    pattern:  /
    defaults: { _controller: TestBackEndBundle:Default:index }

_security_login:
    pattern:  /login
    defaults: { _controller: TestBackEndBundle:Security:login }

_security_check:
    pattern:  /login_check

_security_logout:
    pattern:  /logout
Run Code Online (Sandbox Code Playgroud)

身份验证运行良好,而不是登录后重定向.应用程序重定向到/ _wdt/5044c6f2a329c.如何重定向到主页?谢谢.

JMe*_*ino 12

解决方案是取消保护您的_wdt路由.

您会收到此行为,因为您的_wdt路由受到保护.当页面从_wdt路由加载工具栏时,它会触发登录.您的登录表单将尝试重定向回触发登录的路由:在这种情况下_wdt.

将其添加到security.yml中的access_control

 - { path: ^/_wdt, roles: 'IS_AUTHENTICATED_ANONYMOUSLY' }
Run Code Online (Sandbox Code Playgroud)

这将使工具栏在受保护和不受保护的页面中都可以工作,如果页面受到保护,那么它将是触发登录表单的页面=它将按预期工作.

  • 这是真正的问题解决方案,而不是已接受的答案. (4认同)