Symfony перенаправляет на вход после успешного входа ... иногда - PullRequest
0 голосов
/ 04 сентября 2018

У меня проблема с Symfony 3.3.9. Иногда, не всегда, когда пользователь входит в систему с правильным именем пользователя и паролем, он перенаправляется на главную страницу, как и должен, но затем возвращается на страницу входа.

Я знаю, что пользователь вошел в систему, потому что я могу получить информацию о пользователе с помощью ветки со страницы входа в систему.

Это действительно странно, потому что это не происходит постоянно. Это кажется случайным и трудно воспроизвести.

Я изучал этот вопрос несколько дней и не могу понять, почему это происходит. Ищу несколько предложений.

Спасибо.

Редактировать-1 добавлен код

Edit-2

Когда меня перенаправили на страницу входа, я попытался ввести URL главной страницы, чтобы перейти туда вручную. Это не работает, даже если я вошел в систему. Однако, если я подожду минуту или около того, это сработает.


Я использую пользовательский пакет FOS

вот мой config.yml

# fos bundle  
fos_user:
    db_driver: orm 
    firewall_name: main
    user_class: Acme\Entity\User

вот мой security.yml

security:
    encoders:
        FOS\UserBundle\Model\UserInterface: bcrypt

    role_hierarchy:
        ROLE_EMPLOYEE:    [ROLE_USER]
        ROLE_MANAGER:     [ROLE_EMPLOYEE]
        ROLE_ADMIN:       [ROLE_MANAGER]
        ROLE_SUPER_ADMIN: [ROLE_ADMIN,ROLE_ALLOWED_TO_SWITCH]

    providers:
        fos_userbundle:
            id: fos_user.user_provider.username

    firewalls:
        main:
            pattern: ^/
            form_login:
                provider: fos_userbundle
                csrf_token_generator: security.csrf.token_manager
                always_use_default_target_path: true
                default_target_path: after_login
                # if you are using Symfony < 2.8, use the following config instead:
                # csrf_provider: form.csrf_provider

            logout:       true
            anonymous:    true
            switch_user:  true

    access_control:
        - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY } 

        - { path: ^/administration/roe, role: ROLE_ADMIN }
        - { path: ^/administration/generateaccessemployees, role: ROLE_ADMIN } 
        - { path: ^/administration/location, role: ROLE_ADMIN }
        - { path: ^/administration/payroll/closepp, role: ROLE_ADMIN }
        - { path: ^/administration/t4, role: ROLE_ADMIN }
        - { path: ^/administration/eft, role: ROLE_ADMIN }
        - { path: ^/administration/stubmessage, role: ROLE_ADMIN }
        - { path: ^/administration/payroll_reminder, role: ROLE_ADMIN }
        - { path: ^/administration, role: ROLE_MANAGER }  
        - { path: ^/admin/exit_impersonation, role: ROLE_PREVIOUS_ADMIN }
        - { path: ^/admin, role: ROLE_SUPER_ADMIN }

В моем login_content.html.twig я могу видеть:

{{ app.user.username }}

1 Ответ

0 голосов
/ 04 сентября 2018

Определенно нужно будет увидеть некоторый код, более конкретно, чтобы помочь найти причину проблемы, независимо от того, какая функция запускается при входе в систему.

EDIT: В security.yml вы можете указать логин_путь, например:

my_firewall:
    pattern: ^/(secured_area)/
    provider: my_provider
    anonymous: ~
    form_login:
        login_path:  my_login_path
        default_target_path: /dashboard

А в routing.yml вы можете отобразить маршрут как:

my_login_path:

pattern:   /my/relative/url/for/login
defaults:  { _controller: MySecurityBundle:Security:login }

тогда вы можете использовать обычный маршрут, в вашем конкретном случае:

return $this->forward($this->generateUrl('my_login_path'));

Единственная причина, по которой я предлагаю это, заключается в том, что маршрутизация по умолчанию после входа в систему вызывает проблемы для вас.

...