php - 登录后 symfony 2 安全重定向

标签 php symfony acl

我有下一个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} }

以及下一个路由:

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

身份验证效果很好,而不是登录后重定向。应用程序重定向到 /_wdt/5044c6f2a329c。如何重定向到主页?谢谢。

最佳答案

解决方案是取消对 _wdt 路由的保护。

您之所以会出现此行为,是因为您的 _wdt 路由受到保护。 当页面从 _wdt 路由加载工具栏时,它会触发登录。您的登录表单将尝试重定向回触发登录的路由:在本例中为 _wdt。

将此添加到 security.yml 中的 access_control

 - { path: ^/_wdt, roles: 'IS_AUTHENTICATED_ANONYMOUSLY' }

这将使工具栏在 protected 和未 protected 页面中工作,如果页面 protected ,它将是触发登录表单的页面 = 它会按预期工作。

关于php - 登录后 symfony 2 安全重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12250347/

相关文章:

php - 是否可以将 num 行(整数)显示为十进制?

php - 多个文件上传的 Symfony 验证

PHP MySQL 只显示表中有多个记录的唯一值

php - 在 Symfony 2 表单上为 "non-mapped entity field"设置默认值

php - CakePHP 2.0 对象不是数组

javascript - 我需要帮助来修复表单中的空白电子邮件

Neo4j 通过具有属性过滤器的多个关系的定向路径

Symfony Acl 投票者始终授予访问权限

php - 使用 PHP 和 SESSION 的登录页面

security - SonataUser - 不为 LIST 调用自定义选民