2017-08-04 12 views
1

現在、PDFジェネレータで作業していますが、URLにアクセスする際に問題があります。symfony 3のセキュリティ - Access_controlが1つのルートで動作しない

誰でもPDFをダウンロードできるはずです。 が私のsecurity.ymlで私は現在、この持っている:

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

    role_hierarchy: ~ 

    providers: 
     fos_userbundle: 
      id: fos_user.user_provider.username 

    firewalls: 
     dev: 
      pattern: ^/(_(profiler|wdt)|css|images|js)/ 
      security: false 
     main: 
      pattern: ^/ 
      form_login: 
       provider: fos_userbundle 
       csrf_token_generator: security.csrf.token_manager 
      logout:  true 
      anonymous: true 

    access_control: 
     - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/gc/$, role: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/admin, role: ROLE_USER } 
     - { path: ^/, role: ROLE_USER } 

を、私は、人々は、以下のURLへのアクセスを持っているしたいと思います:/admin/maintenance/pdf/{id}

だから私は、次の行を追加:

access_control: 
     - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/gc/$, role: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/admin, role: ROLE_USER } 
     - { path: ^/, role: ROLE_USER } 
     - { path: ^/admin/maintenance/pdf/$, role: [ROLE_USER,IS_AUTHENTICATED_ANONYMOUSLY] } 

をしかし、私はまだログインしていないときにログインページにリダイレクトされます。

私はいくつかのテストを行いましたが、それは問題がある次の行です:

- {path:^/, role: ROLE_USER} 

私は自分のURLへのアクセスを誤って設定していると思います。

誰かが私を助けることができますか? ありがとうございます

+0

移動し、それまでなので、 '^ /管理/メンテナンス/ PDF $'はそれがかもしれない実際には最初 –

+1

テストされています/ '^/maintenance/pdf/$'それはそこに属していないようです。 –

答えて

3

アイテムが順々に処理されているので、あなたが前にそれを置く必要があります。

access_control: 
     - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/gc/$, role: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/admin/maintenance/pdf/$, role: [ROLE_USER,IS_AUTHENTICATED_ANONYMOUSLY] } 
     - { path: ^/admin, role: ROLE_USER } 
     - { path: ^/, role: ROLE_USER } 
+0

それは動作します!ありがとう:) –

+1

1分ハハ:)待つ必要がある今私は傾ける^^ ' –

0

最初に一致するように、より具体的なルールを上に移動してください。 ACLで

+0

それは動作します!ありがとう:) –

関連する問題