2012-03-28 13 views
0

私のアプリで認証を処理する方法は、認証の背後にあるすべてのものを100%入れてから、特定の例外を指定することです。Symfony2の認証をバイパスする "welcome"ページ

これらの例外にはログインページと他のいくつかのページが含まれます。 1つの部分を除いて、すべてが正常に動作しています:「デフォルト」ページ、またはそれを呼び出したいもの。明らかに、私のサイトの一番上のページを見るために人々がログインする必要はありませんが、認証に必要とされないようにする方法はわかりません。ここで

は私のウェルカムページのための私のルートです:

_welcome: 
    pattern:/
    defaults: { _controller: VNNPressboxBundle:User:welcome } 

ここに私のapp/config/security.ymlです:

access_control: 
    - { path: ^/_welcome, roles: IS_AUTHENTICATED_ANONYMOUSLY } 

にもかかわらず、私は:

security: 
    encoders: 
     Symfony\Component\Security\Core\User\User: 
      algorithm: sha1 
      iterations: 1 
      encode_as_base64: false 
     VNN\PressboxBundle\Entity\User: 
      algorithm: sha1 
      iterations: 1 
      encode_as_base64: false 

    role_hierarchy: 
     ROLE_ADMIN:  ROLE_USER 
     ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH] 

    providers: 
     administrators: 
      entity: { class: VNNPressboxBundle:User, property: username } 

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

     secured_area: 
      pattern: ^/ 
      form_login: ~ 
      logout: ~ 
      anonymous: ~ 
      http_basic: 
       realm: "Secured Demo Area" 

    access_control: 
     - { path: ^/_welcome, roles: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/user/new, roles: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/user/create, roles: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/user/thanks, roles: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/user/agreement, roles: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/user/welcome, roles: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/user/activate, roles: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/signup, roles: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/admin, roles: ROLE_ADMIN } 
     - { path: ^/, roles: ROLE_USER } 

関連部分、もちろん、これですそのように設定されていると、ウェルカムPAに行くときにログイン画面が表示されるge(そしてそれによって私はhttp://myapp.com/app_dev.php/user/welcomeと対照的にhttp://myapp.com/app_dev.phpを意味する)。私は何が欠けていますか?

答えて

0

は、デフォルトページの例外を作った後、認証の後ろに子を設定してみてください。これは、デフォルトのページを除いて認証の背後にあるすべてを置くべきです。また、あなたの例外を処理する必要があります。

- { path: ^/$, role: IS_AUTHENTICATED_ANONYMOUSLY } 
- { path: ^/*, role: IS_AUTHENTICATED_REMEMBERED } 
+0

ちょうどその最初の行が私のためにやったようでした。ありがとう! (もし私が両方の線を使っていたら、それはうまくいかなかった) –