Symfony Компонент безопасности не запоминает сессию - PullRequest
1 голос
/ 03 июля 2019

Я использую Symfony 4.3.2 на PHP 7.3.4 Вот мой 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 я успешно прошел аутентификацию и получил сеанс администратора ..

Я не понял, почему в моей новой версии это не работает .. Может быть, время жизни сессии? право записи сессии?

Единственное решение, которое работает, это поставить галочку в поле «Запомнить меня»

Спасибо, помогите мне

...