新页面的symfony默认访问规则

时间:2019-03-13 12:28:04

标签: php symfony

在我的Symfony应用程序中,我使用FOSUserBundle进行用户身份验证。访问控制是基于ResourceServerConfigurerAdapter中的规则进行的。问题是,当我创建一个新页面(具有新的路由)并且不包含在security.yml中时,对该页面的访问会自动进行粒度设置,并且任何用户都可以访问该页面,直到它没有发布到{{ 1}}。默认情况下,security.yml中没有显示所有新页面时,如何防止这种行为并使我的所有新页面成为新页面?我试图将以下行添加到security.yml部分:

security.yml

但是它不起作用。有什么想法怎么做?谢谢。

1 个答案:

答案 0 :(得分:0)

您需要使用firewall rule创建一个新的pattern并将prefix添加到您的安全和非安全路由中:

security:

    .
    . Some other settings here
    .

    firewalls:
        public_area:
            pattern:  ^/public
            stateless: true
            anonymous: true
            provider: entity_provider

         private_area:
            pattern:  ^/private
            stateless: true
            anonymous: true
            provider: entity_provider

    access_control:
        - { path: ^/public, roles: IS_AUTHENTICATED_ANONYMOUSLY, methods: [POST] }
        - { path: ^/private, roles: IS_AUTHENTICATED_FULLY }
        - { path: ^/private/login, roles: IS_AUTHENTICATED_ANONYMOUSLY, methods: [POST] }

More you can read here

此代码仅是示例,它可能包含错误:)当然,您可以从不安全的防火墙中删除前缀。

为简化代码,您可以在一个位置声明前缀-/config/routes/annotations.yaml

controllers:
    resource: ../../src/Controller/
    type: annotation

page1:
    prefix: /page
    resource: App\Controller\Page1Controller

page2:
    prefix: /page
    resource: App\Controller\Page2Controller

page3:
    prefix: /page
    resource: App\Controller\Page3Controller