2012-03-10 6 views
4

symfony 2セキュリティコンポーネントに有線で問題があります。 {{ app.user }}オブジェクトは保護された領域内でのみ利用可能であるため、ファイアウォールパターンは^/に設定されています。今、私は登録のようないくつかのページを「安全でない」ようにします。私はaccess_controlを使ってこれを試しましたが、うまくいきません。Symfony 2 - ファイアウォールとアクセスコントロールの問題

は、ここに私のsecurity.yml

firewalls: 
    dev: 
     pattern: ^/(_(profiler|wdt)|css|images|js)/ 
     security: false 

    login: 
     pattern: ^/account/login$ 
     security: false 

    account_area: 
     pattern: ^/ 
     form_login: 
      check_path: /account/login_check 
      login_path: /account/login 
      default_target_path: /account 
     remember_me: 
      key:  blaBlubKey 
      lifetime: 3600 
      path: /
      domain: ~ 
     logout: 
      path: /account/logout 
      target:/

access_control: 
    #works 
    - { path: ^/backend, roles: ROLE_USER } 
    #works not 
    - { path: ^/registration, roles: IS_AUTHENTICATED_ANONYMOUSLY } 
事前に

感謝です!

答えて

4

account_areaで使用anynymousディレクティブ:

account_area: 
     pattern: ^/ 
     anonymous: ~ 
+0

私は匿名 '使用しました::true'を – Frido

10

言及する価値はここでのベストプラクティスは、ログインページのためACCESS_CONTROLでのみ1つのファイアウォールを使用することであるということです。どうして?ログインしているユーザーが/ログインページにアクセスしようとすると、あなたはどうしますか?コントローラが別のセキュリティシステムであるため、ユーザーがメインファイアウォールで認証されるため、ログインファイアウォールでは認証されないため、認証されてリダイレクトされた場合、コントローラにチェックインすることはできません。

security: 
    firewalls: 
     dev: 
      pattern: ^/(_(profiler|wdt)|css|images|js)/ 
      security: true 
      anonymous: ~ 
     secured_area: 
      pattern: ^/ 
      anonymous: ~ 
      form_login: 
       login_path: /login 
       check_path: /login_check 
       always_use_default_target_path: true 
       default_target_path:/
      logout: 
       path: /logout 
       target:/
    providers: 
     main: 
      entity: { class: Core\UserBundle\Entity\User, property: username } 
    access_control: 
     - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/admin, roles: ROLE_SUPERADMIN } 
     - { path: ^/user, roles: ROLE_USER } 
     - { path: ^/, roles: IS_AUTHENTICATED_FULLY } 
+1

ブラボー

は、ここで私のために素晴らしい作品のsecurity.ymlです!これは私が考えていたもので、私は確認を得る! – gremo

+0

安全な場所に「匿名:〜」を追加すると、これを動作させるために必要なものでした。 – Jessica

関連する問題