Symfony安全组件不记得会话

时间:2019-07-03 10:11:46

标签: symfony-security symfony-4.3

我在PHP 7.3.4上使用Symfony 4.3.2 这是我的security.yaml

security:
providers:
    admin_provider:
        entity:
            class: App\Entity\Admin
            property: username
    user_provider:
        entity:
            class: App\Entity\User
            property: username
    chain_provider:
        chain:
            providers: [user_provider, admin_provider]
firewalls:
    dev:
        pattern: ^/(_(profiler|wdt)|css|images|js)/
        security: false
    backoffice:
        pattern: ^/
        provider: admin_provider
        anonymous: true
        logout:
            path: admin.logout
            target: admin.login
        form_login:
            login_path: admin.login
            check_path: admin.login
            default_target_path: admin.index
    main:
        pattern: ^/
        provider: user_provider
        anonymous: true
        logout:
            path: logout
            target: login
        remember_me:
            secret:   '%kernel.secret%'
            lifetime: 604800 # 1 week in seconds
            path:     /
        form_login:
            login_path: login
            check_path: login
access_control:
    - { path: ^/admin/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/admin/, roles: ROLE_ADMIN }
    - { path: ^/mon-compte, roles: ROLE_USER }
encoders:
    App\Entity\User:
        algorithm: auto
        cost: 12
    App\Entity\Admin:
        algorithm: auto
        cost: 12

我当然有表格,控制器和视图。

现在发生的是:

  • 转到/ admin时,我将重定向到/ admin /表单
  • 我成功进行了身份验证,并返回到/ admin / login。
  • 安全在那里决定忽略我的身份验证并创建一个新的匿名会话
  • 身份验证后/ login的问题相同,我以匿名身份回到/

我在事件探查器中检查了我的请求,在表单上进行POST时,可以在用户会话中看到会话“ _security_main”。

C:74:"Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken":294:{a:3:{i:0;N;i:1;s:4:"main";i:2;a:5:{i:0;C:15:"App\Entity\User":29:{a:2:{i:0;i:8;i:1;s:4:"test";}}i:1;b:1;i:2;a:1:{i:0;O:41:"Symfony\Component\Security\Core\Role\Role":1:{s:47:"\x00Symfony\Component\Security\Core\Role\Role\x00role";s:13:"ROLE_CUSTOMER";}}i:3;a:0:{}i:4;a:1:{i:0;s:13:"ROLE_CUSTOMER";}}}}"

但是在我的旧Symfony项目3.4中,我成功进行了身份验证并获得了管理会话。

我不明白为什么在我的新版本中它不起作用.. 也许会话一生?会话的可写权限?

唯一有效的解决方案是在“记住我”框中打勾

谢谢帮助

0 个答案:

没有答案