2014-12-22 43 views
0

我正在使用symfony2和FOSUserBundle,我試圖正確設置我的防火牆。symfony2配置防火牆 - 登錄時出現奇怪的行爲

我希望我的網站的主要部分不能提供給匿名用戶。主頁(公共模式中的$)和其他一些應該根據模式可用。

使用我當前的配置,登錄後我被重定向到主頁,但仍然是匿名的。如果我直接鍵入一個不允許匿名的頁面的URL,我可以訪問它,並且我已登錄(在分析器中)。

我的配置:

dev: 
    pattern: ^/(_(profiler|wdt)|css|images|js)/ 
    security: false 
public: 
    pattern:  /(login$|register|resetting|public|$) 
    anonymous:  true 
main: 
    pattern:  ^/ 
    anonymous:  false 
    provider:  main 
    form_login: 
     login_path: fos_user_security_login 
     check_path: fos_user_security_check 
    logout: 
     path:  fos_user_security_logout 
     target: /

我能做些什麼,以使其正常工作(登錄後正確登錄)。

編輯: 我更清楚發生了什麼事情:登錄後,我被重定向到主頁=根地址。這首先進入公共防火牆,這是我不認爲連接。

回答

0

完成!解決方案包括其更好地在這裏描述的防火牆的上下文屬性: Authenticate multiple symfony2 firewalls with one login form

我的配置現在變成:

防火牆:

dev: 
    pattern: ^/(_(profiler|wdt)|css|images|js)/ 
    security: false 
guest: 
    pattern:  /(user/login$|user/register|user/resetting|$) 
    anonymous:  true 
    context:  main_auth 
main: 
    pattern:  ^/(?!user/login$) 
    anonymous:  false 
    provider:  main 
    context:  main_auth 
    form_login: 
     login_path: fos_user_security_login 
     check_path: fos_user_security_check 
    logout: 
     path:  fos_user_security_logout 
     target: /
    remember_me: 
     key:  "%secret%" 
     lifetime: 86400 # 365 jours en secondes 
     path: /
     domain: ~ # Prend la valeur par défaut du domaine courant depuis $_SERVER 
    oauth: 
     remember_me: true 
     resource_owners: 
      facebook:   "/loginhwi/check-facebook" 
      github:    "/loginhwi/check-github" 
      google:    "/loginhwi/check-google" 
      twitter:   "/loginhwi/check-twitter" 
      linkedin:   "/loginhwi/check-linkedin" 
      flickr:    "/loginhwi/check-flickr" 
     login_path:  fos_user_security_login 
     check_path:  fos_user_security_check 
     failure_path:  fos_user_security_login 
     success_handler: foodmeup_user.handler_auth 
     oauth_user_provider: 
      service: fosubuser.provider 
0

那麼你總是可以硬編碼,你重定向路徑登錄後(在您的security.yml文件中)。您可以閱讀更多here

security: 
    firewalls: 
     main: 
      form_login: 
       default_target_path: default_security_target