简体   繁体   English

获取控制器内的当前default_target_path

[英]get current default_target_path inside an controller

I'm using FOSUserBundle+FOSFacebookBundle and I'm trying to make my login and register page unaccesible after logging in. If the user logged in and is accesing one of these page he should be redirected to page defined in firewall's default_target_path. 我正在使用FOSUserBundle + FOSFacebookBundle,我正在尝试登录后无法访问登录和注册页面。如果用户登录并正在访问其中一个页面,则应将其重定向到防火墙default_target_path中定义的页面。

The problem is that I don't know how to get default_target_path while inside an controller. 问题是我不知道如何在控制器内部获取default_target_path。 I was using 我在用

$request->getSession()->get('_security.target_path');

but it returns null. 但它返回null。

Here is my security.yml file: 这是我的security.yml文件:

jms_security_extra:
    secure_all_services: false
    expressions: true

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

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

    providers:
        chainprovider:
            chain:
                providers: [ fos_userbundle, fos_facebookbundle]
        fos_userbundle:
            id: fos_user.user_provider.username
        fos_facebookbundle:
            id: fos_facebookbundle

    firewalls:
        main:
            pattern: ^/
            form_login:
                provider: fos_userbundle
                csrf_provider: form.csrf_provider
                default_target_path: /
            fos_facebook:
                app_url: "FB_APP_URL"
                server_url: "APP_URL"
                login_path: /login
                check_path: /login_fb_check
                default_target_path: /
                provider: fos_facebookbundle
            logout: true
            anonymous: true

        dev:
            pattern: ^/(_(profiler|wdt)|css|images|js|font)/
            security: false

    access_control:
        - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/admin/, role: ROLE_ADMIN }

Any ideas? 有任何想法吗?

Thank you. 谢谢。

Set: 组:

firewalls:
    main:
        pattern: ^/
        form_login:
            # ...
            default_target_path: %target_path%

target_path set in parameters.yml parameters.yml设置target_path

parameters:
    # ...
    target_path: /
    # ...

and than get value by: 而不是获得价值:

$this->container->getParameter('target_path');

你错过了获得的一部分:

$request->getSession()->get('_security.main.target_path');

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM