Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Security Symfony-2>;登录&;带有占位符的注销路由_Security_Symfony_Routing_Placeholder - Fatal编程技术网

Security Symfony-2>;登录&;带有占位符的注销路由

Security Symfony-2>;登录&;带有占位符的注销路由,security,symfony,routing,placeholder,Security,Symfony,Routing,Placeholder,我正在使用Symfony-2实现我的应用程序。 我需要我的登录和注销路由具有一些占位符,但我无法在routing.yml和security.yml文件中很好地定义它 我想要像这样的东西: www.mysite.com/{client_slug}/panel 在它下面还有其他安全页面: www.mysite.com/{client\u slug}/panel/* 当有人试图导航到其中一个页面时,他/她应重定向到: www.mysite.com/{client_slug}/login 单击“注销”后

我正在使用Symfony-2实现我的应用程序。
我需要我的登录和注销路由具有一些占位符,但我无法在routing.yml和security.yml文件中很好地定义它

我想要像这样的东西:
www.mysite.com/{client_slug}/panel

在它下面还有其他安全页面:
www.mysite.com/{client\u slug}/panel/*


当有人试图导航到其中一个页面时,他/她应重定向到:
www.mysite.com/{client_slug}/login


单击“注销”后,用户应该被重定向到如下位置:
www.mysite.com/{client_slug}/再见


我尝试了几件事(但目前唯一的收获是在我的登录url中出现了文本{client_slug}:

www.mysite.com/my cliend slug/panel

重定向到
www.mysite.com/{client_slug}/login


security.yml

firewalls:
    main:
        pattern: /.*
        form_login:
            check_path: /login_check
            login_path: _security_login
        logout:
            path:   /logout
            target: /goodbye
        security: true
        anonymous: true
_security_login:
    pattern:  /{_client_slug}/login
    defaults: { _controller: MyAppBackendBundle:Security:login }

_security_check:
    pattern:  /login_check

_security_logout:
    pattern:  /logout

_admin_panel:
    pattern:  /{_client_slug}/panel
    defaults: { _controller: MyAppBackendBundle:AdminPanel:index }
routing.yml

firewalls:
    main:
        pattern: /.*
        form_login:
            check_path: /login_check
            login_path: _security_login
        logout:
            path:   /logout
            target: /goodbye
        security: true
        anonymous: true
_security_login:
    pattern:  /{_client_slug}/login
    defaults: { _controller: MyAppBackendBundle:Security:login }

_security_check:
    pattern:  /login_check

_security_logout:
    pattern:  /logout

_admin_panel:
    pattern:  /{_client_slug}/panel
    defaults: { _controller: MyAppBackendBundle:AdminPanel:index }

有什么想法吗?

我遇到了完全相同的问题。我已经阅读了这里的所有内容(),对我来说,它只包含了几行额外的内容

这是我的保安

       login_area:
            pattern:    ^/[A-Za-z0-9\-\_]+/login$
            anonymous:  ~

        secured_area:
            pattern:    ^/[A-Za-z0-9\-\_]+/.*
            form_login:
                login_path:  login
                check_path:  login_check
            logout:
                path:   logout
                target: /
            remember_me:
                key:      "%secret%"
                lifetime: 31536000 
                path:     /
                domain:   ~
登录和登录路径定义:

login:
    pattern:  /{_client}/login
    defaults: { _controller: GNCApplicationBaseBundle:Security:login }

login_check:
    pattern:  /{_client}/login_check
我制作了一个EventListener,它将在kernel.request事件中调用:

acme.system.client.listener:
        class: Acme\System\ClientBundle\EventListener\ClientListener
        arguments: [@router, @doctrine.orm.entity_manager]
        tags:
            - { name: kernel.event_listener, event: kernel.request, method: onKernelRequest, priority: 10 }
重要的属性是优先级。在Symfony文档()中,它显示RouterListener的优先级为32,防火墙的优先级为8。因此,我选择在防火墙之前调用我的自定义EventListener,并在路由器上下文中手动设置_client-attribute:

public function onKernelRequest(GetResponseEvent $event) {

        $clientIdentifier = $event->getRequest()->attributes->get('_client');
        $this->router->getContext()->setParameter('_client', $clientIdentifier);

    }
而且对我来说效果很好


我目前正在使用Symfony 2.2.0-RC3。

请发布routing.yml和security.yml文件的相关部分,这样我们可以确保您的访问控制和防火墙设置正确。只需在原始问题中添加相关部分。
\u client\u slug
应该包含什么?它是一个带有客户端名称slug的字符串。appli阳离子对每个客户端都有面板,url应该包含其slug。例如,如果客户端名为“Manolo and sons”,slug将只是manolo和sons。它将在整个课程中提供服务,以验证不同模块的访问权限。Manixx;你的英语一点也不差!你的写作比许多母语人士都好。我删除你的道歉,因为这真的是完全没有必要的。