2012-08-23 144 views

回答

13

我必須設置always_use_default_target_pathtrue,如圖 symfony documentation

#app/config/security.yml 

firewalls: 
    main: 
     pattern: ^/ 
     form_login: 
      login_path: /login 
      default_target_path: /my/desired/path 
      always_use_default_target_path: true 
6

我有同樣的問題,我是有這個問題的原因是因爲Symfony的嘗試加載的網頁調試工具(因此錯誤中的「_wdt」位),它有自己的路徑,在頁面加載結束時被調用。就我而言,我已經配置了我的security.yml像這樣:

應用程序/配置/ security.yml

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

    role_hierarchy: 
     ROLE_ADMIN:  ROLE_USER 
     ROLE_SUPER_ADMIN: ROLE_ADMIN 

    providers: 
     fos_userbundle: 
      id: fos_user.user_provider.username 

    firewalls: 
     main: 
      pattern: ^/ 
      form_login: 
       provider: fos_userbundle 
       csrf_provider: form.csrf_provider 
      logout:  true 
      anonymous: true 

    access_control: 
     - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/css, role: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/js, role: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/, role: ROLE_USER } 

這意味着,如果用戶試圖打開一個頁面根後面什麼「 /」,他必須先登錄

我解決了這一問題的方法是通過添加‘_wdt’的一部分,並允許它爲匿名用戶:

access_control: 
     - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/css, role: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/js, role: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/_wdt, role: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/, role: ROLE_USER } 
+0

謝謝!這是解決真正的問題。不幸的是,選擇的答案只是「覆蓋」了問題的出現。 –

0

這可能是一個老問題,但而不是o f改變access_control當前Symfony2配置爲調試工具欄提供了額外的防火牆:

# Disabling the security for the web debug toolbar, the profiler and Assetic. 
    dev: 
     pattern: ^/(_(profiler|wdt)|css|images|js)/ 
     security: false 
相關問題