2016-07-05 79 views
2

歷史: 原標題:PROD環境中工作,開發失敗

訪問被拒絕......用戶沒有充分驗證;登錄 IS_AUTHENTICATED_ANONYMOUSLY

功能齊全的2.8.8站點在新鮮的3.1.2安裝中重建。一旦安裝了Symfony,composer.json被修改爲包含來自2.8站點的依賴關係。安裝成功。開發環境的行爲如下所述。爲了獲得額外的處理問題,審查了產品環境。它揭示了一些在2.8 phpunit測試中沒有顯示的棄用。一旦這些被清除,3.1 prod環境表現爲2.8 prod環境。結論是,導致問題的2.8和3.1開發環境存在一些差異。當然,我可能在沿途的某個地方向自己開槍。

原題:

在新安裝的3.1瓦特/ FOSUserBundle,/login/路線導致與開發日誌條目的循環:

編輯:整個網站要被保護。 access_control指令{ path: ^/, role: ROLE_USER }不是錯誤。該網站在Symfony 2.8.8中運行得很好。

編輯#2:事實證明prod環境行爲正常。開發沒有。 config_dev.ymlrouting_dev.yml是3.1的默認ymls。

request.INFO: Matched route "{route}". {"route":"fos_user_security_login" ... 
security.INFO: Populated the TokenStorage with an anonymous Token.... 
security.DEBUG: Access denied, the user is not fully authenticated; redirecting to authentication entry point 
security.DEBUG: Calling Authentication entry point.... 

鉻說:

重定向你太多次

需要防火牆的變化?

security.yml(基本,從docs:與修改)

security: 
    encoders: 
     FOS\UserBundle\Model\UserInterface: 
     algorithm: md5 
     ignore_case: true 
     encode_as_base64: false 
     iterations: 1 

    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_token_generator: security.csrf.token_manager 
      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: ^/, role: ROLE_USER } 
+0

您是否通過/註冊url註冊了用戶? –

+0

當我以匿名用戶的身份訪問網站時,我得到了上述信息,因此從未註冊。期望的是,作爲匿名用戶,我將被要求登錄。這是在Symfony 2.8.8中構建的應用程序分支中發生的情況。 – geoB

+0

我應該加上:使用完全相同的'security.yml'。 – geoB

回答

1

不是一個答案,我發佈此,以保留展示什麼不能解決的問題上面的討論。爲了重現這個問題,我開始第二次嘗試將工作2.8應用程序遷移到3.1中。這次我成功了;我無法確定是什麼原因造成了上述困難。

請考慮撤回的問題。

1

看來你保護你的login_check路線 - 因此,當用戶提交登錄表單,請求被抓,他將被重定向到另一個登錄表單。

嘗試增加此規則:

access_control: 
    # ... 
    - { path: ^/login_check$, role: IS_AUTHENTICATED_ANONYMOUSLY } 
+0

此行爲沒有變化 – geoB