2012-10-04 78 views
0

我建立一個網站,一個簡單的架構,在一個非常基本的方式使用FOSuserBundle:Symfony2中失去了認證

  • 一個公共區域,用戶可以在這裏進行驗證
  • 一個保護區,在這裏用戶可以被認證
  • 登錄頁面

認證工作正常,在公共頁面。 但是,當用戶轉到受保護頁面時,認證會丟失(匿名),並且用戶將被重定向到登錄頁面。不過,用戶仍然可以通過公共頁面進行身份驗證。

這裏是防火牆的配置:

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

    login: 
     pattern: ^/(login$|register|resetting) 
     anonymous: true 

    secured_area: 
     pattern: ^(/[A-Za-z_]*/[A-Za-z0-9-]*/[A-Za-z0-9-]*/.*)|(/[A-Za-z_]*/NT.*) 
     form_login: 
      provider: fos_userbundle 
      csrf_provider: form.csrf_provider 
      remember_me: true 
      use_referer: true 
     remember_me: 
      key:   %secret% 
     anonymous:  false 
     logout:   true 

    main: 
     pattern: ^/ 
     form_login: 
      provider: fos_userbundle 
      csrf_provider: form.csrf_provider 
      remember_me: true 
      use_referer: true 
     remember_me: 
      key:   %secret% 
     anonymous:  true 
     logout:   true 

謝謝:)

回答

0

如果你有2防火牆你要問用戶通過他們每個人進行身份驗證。 不能堅持主要和需要一些角色來訪問您的安全頁面? 你可以添加刪除secured_area防火牆,並添加例如:

access_control:  
    - { path: ^/secured, role: ROLE_ADMIN } 
+0

謝謝,這是工作正常。所以,這意味着防火牆可以獨立工作,不共享認證信用。那麼,我不明白爲什麼我對主防火牆進行身份驗證,因爲我通過登錄防火牆進行了登錄... – Yako

+1

是的。防火牆不會共享身份驗證令牌,因此您可以通過一個進行身份驗證,但通過第二次您是匿名的。 – Michal