在我的Symfony应用程序中,我使用FOSUserBundle进行用户身份验证。访问控制是基于ResourceServerConfigurerAdapter
中的规则进行的。问题是,当我创建一个新页面(具有新的路由)并且不包含在security.yml
中时,对该页面的访问会自动进行粒度设置,并且任何用户都可以访问该页面,直到它没有发布到{{ 1}}。默认情况下,security.yml
中没有显示所有新页面时,如何防止这种行为并使我的所有新页面成为新页面?我试图将以下行添加到security.yml
部分:
security.yml
但是它不起作用。有什么想法怎么做?谢谢。
答案 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] }
此代码仅是示例,它可能包含错误:)当然,您可以从不安全的防火墙中删除前缀。
为简化代码,您可以在一个位置声明前缀-/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