Symfony: после входа в систему не перенаправляется обратно на запрошенную страницу

Я хочу перенаправить обратно на запрошенную страницу после входа в систему, я знаю, что symfony предоставляет это по умолчанию, но в моем случае это не работает. Я пробовал с referer: true в security.yml, но не получил никакого результата.

Я использую FOSUserBundle для управления пользователями. Ваша помощь будет оценена, спасибо заранее.

security.yml

security:
 encoders:
    FOS\UserBundle\Model\UserInterface: bcrypt
    Admin\UserBundle\Entity\SuperAdmin: bcrypt
  role_hierarchy:
    ROLE_DEFAULT:     ROLE_DEFAULT
    ROLE_SUPER_ADMIN: ROLE_SUPER_ADMIN
  providers:
    in_memory:
        memory: ~
    fos_userbundle:
      id: fos_user.user_provider.username_email
    administrators:
        entity: { class: Admin\UserBundle\Entity\SuperAdmin, property: email}
  firewalls:
    dev:
        pattern: ^/(_(profiler|wdt)|css|images|js)/
        security: false
    social:
        pattern: ^/            
        form_login:
            provider: fos_userbundle
            csrf_token_generator: security.csrf.token_manager
            login_path: fos_user_security_login
            check_path: fos_user_security_check
            default_target_path: user_bundle_homepage
            success_handler: my.authentication_success_handler
        logout:
            path:   fos_user_security_logout
            target: fos_user_security_login
        anonymous: true

  access_control:
    - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY, requires_channel: https  }        
    - { path: ^/login/facebook$, role: IS_AUTHENTICATED_ANONYMOUSLY, requires_channel: https }
    - { path: ^/login/google$, role: IS_AUTHENTICATED_ANONYMOUSLY, requires_channel: https  }
    - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY, requires_channel: https }
    - { path: ^/admin0rama/.*, role: ROLE_SUPER_ADMIN, requires_channel: https}
    - { path: ^/.*, role: ROLE_DEFAULT, requires_channel: https}

person Kirit    schedule 15.03.2018    source источник
comment
Вы пытались использовать «always_use_default_target_path: false» в «form_login»?   -  person Tim Zwinkels    schedule 15.03.2018
comment
@TimZwinkels Я пробовал с always_use_default_target_path: false, но все равно не работает.   -  person Kirit    schedule 15.03.2018


Ответы (2)


Я думаю, вы должны использовать use_referer: true в определении вашего брандмауэра (а не только referer).

Пример:

# security.yaml
security:
    firewalls:
        social:
            form_login:
                use_referer: true

Документация.

person Juuuuuu    schedule 15.03.2018

Можете ли вы попробовать с _target_path, вы можете добавить это поле в свою форму входа, это всегда работает для меня в моих проектах

{% if app.request.get('_route') != app.request.headers.get('referer') %}    
    <input type="hidden" name="_target_path" value="{{ app.request.headers.get('referer') }}" />    
{% endif %}

Я надеюсь это тебе поможет

Как настроить перенаправление после входа в форму

person Jose M. González    schedule 15.03.2018