Symfony2.4.2限制对特定页面的访问

时间:2017-03-15 16:32:38

标签: php symfony routing

这是一个使用symfony 2.4.2制作的网站,它有一个页面(下载)受限制,你需要一个用户和密码才能访问它。

事情是,当天他们想要不同语言的不同网址,不仅要更改区域设置,还要更改" slug"。

因此,如果您像普通人一样通过点击按钮访问该页面,它会询问您的用户名和密码,但是,如果您使用其他受支持语言的语言环境支持其中一种受支持语言的URL,让你通过而不要求你访问。

这是我的routing.yml:

     frontend_descarregues_ca:
         path: /descarregues.html
         defaults: {_controller: FrontendBundle:Default:descarregues, _locale: ca }

    frontend_descarregues_es:
        path: /descargas.html
        defaults: { _controller: FrontendBundle:Default:descarregues, _locale: es }

    frontend_descarregues_fr:
        path: /telechargements.html
        defaults: { _controller: FrontendBundle:Default:descarregues, _locale: fr }

这是我的security.yml:

    security:
        firewalls:
            dev:
                pattern:  ^/(_(profiler|wdt)|css|images|js)/
                security: false
        default:
            pattern:        ^/ca/descarregues.html
            provider:       in_memory
            http_basic: ~
            anonymous:      ~
        default_fr:
            pattern:        ^/fr/telechargements.html
            provider:       in_memory
            http_basic: ~
            anonymous:      ~
        default_es:
            pattern:        ^/es/descargas.html
            provider:       in_memory
            http_basic: ~
            anonymous:      ~

        access_control:
            - { path: ^/ca/descarregues.html, roles: ROLE_DOWN }
            - { path: ^/es/descargas.html, roles: ROLE_DOWN }
            - { path: ^/fr/telechargements.html, roles: ROLE_DOWN }

        providers:
            in_memory:
                memory:
                    users:
                        someuser:
                            password: somepassword
                            roles: 'ROLE_DOWN'

我再说一遍,这是symfony 2.4.2

我尝试使用要求只允许具有指定" slug"的语言环境。为了有效并进入页面,但这样做恰好是它不会问我访问权限。

有人知道我该如何解决这个问题? (正如提醒这是symfony 2.4.2)

1 个答案:

答案 0 :(得分:0)

试试这个:

security:
    firewalls:
        dev:
            pattern:  ^/(_(profiler|wdt)|css|images|js)/
            security: false
    default:
        pattern:        ^/[a-zA-Z]+/descarregues.html
        provider:       in_memory
        http_basic: ~
        anonymous:      ~
    default_fr:
        pattern:        ^/[a-zA-Z]+/telechargements.html
        provider:       in_memory
        http_basic: ~
        anonymous:      ~
    default_es:
        pattern:        ^/[a-zA-Z]+/descargas.html
        provider:       in_memory
        http_basic: ~
        anonymous:      ~

    access_control:
        - { path: ^/[a-zA-Z]+/descarregues.html, roles: ROLE_DOWN }
        - { path: ^/[a-zA-Z]+/descargas.html, roles: ROLE_DOWN }
        - { path: ^/[a-zA-Z]+/telechargements.html, roles: ROLE_DOWN }

    providers:
        in_memory:
            memory:
                users:
                    someuser:
                        password: somepassword
                        roles: 'ROLE_DOWN'