2015-10-06 50 views
0

當我嘗試登錄時,頁面會自動重定向。這是Firefox的錯誤,我得到:Symfony登錄重定向本身

的網頁沒有正確重定向

的Firefox已檢測到服務器的方式,將永遠不會完成重定向對 請求這個地址。

任何想法可能導致它?

SECURITY.YML:

security: 
    encoders: 
     FixedApp\Model\User: 
      algorithm:  sha1 
      encode_as_base64: false 
      iterations:  1 

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

    providers: 
     administrators: 
      entity: { class: FixedApp\Model\User, property: username } 

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

     login: 
      pattern: ^/$ 
      security: false 

     secured_area: 
      pattern: ^/ 
      form_login: 
       check_path: fixed_app_authentication_login 
       login_path: fixed_app_authentication_homepage 
       username_parameter: username 
       password_parameter: password 
       default_target_path: fixed_app_authentication_homepage 
       always_use_default_target_path: true 
       success_handler: security.authentication.success_handler 
      logout: 
       path: fixed_app_authentication_logout 
       target: fixed_app_homepage 

    # To give access to the ROLE_LIMITED_ADMIN, use - role: [ROLE_USER, ROLE_LIMITED_ADMIN] 
    access_control: 
    - { path: ^/log-in$, role: IS_AUTHENTICATED_ANONYMOUSLY } 
    - { path: /home, roles: ROLE_USER } 

的routing.yml:

fixed_app_homepage: 
    pattern:/
    defaults: { _controller: FixedAppAuthenticationBundle:Default:index } 

fixed_app_authentication_homepage: 
    pattern: /home 
    defaults: { _controller: FixedAppAuthenticationBundle:Default:loggedIn } 

fixed_app_authentication_logout: 
    path: /log-out 

# Verify the log in 
fixed_app_authentication_login: 
    pattern: /log-in 

AUTHENTICATIONSUCCESSHANDLER.PHP 這沒有什麼區別,如果我評論返回線路輸出,雖然。

function onAuthenticationSuccess(Request $request, TokenInterface $token) 
{ 
    return new RedirectResponse($this->router->generate('fixed_app_authentication_homepage')); 
} 

回答

1
form_login: 
    login_path: fixed_app_authentication_homepage 

不是你登錄後其實你來自哪裏,登錄重定向到,它有允許匿名用戶,你重定向有身份驗證失敗。所以如果你看到認證失敗,你會得到無盡的重定向行爲。

您需要允許它是IS_AUTHENTICATED_ANONYMOUSLY

例如

- { path: /home, roles: IS_AUTHENTICATED_ANONYMOUSLY } 

如果這不是您的本意,你需要一個單獨的頁面login_path和然後重定向到成功的安全/主頁。

+0

嗨理查德,謝謝你的迴應。你能解釋一下你的意思嗎?「如果這不是你想要的,你需要爲login_path創建一個單獨的頁面,然後在成功時重定向到安全/主頁。」? – b85411

+0

嗨,沒問題。我可能沒說得那麼好。我的意思是,check_path和login_path路由都需要匿名。成功進行身份驗證後,*然後*可以將onAuthenticationSuccess方法重定向到需要ROLE_USER的安全路由。 – Richard

+0

您目前遇到的問題是,如果auth由於某種原因失敗,Symfony會將您重定向到login_path,這需要一個有效的用戶,這會再次將您重定向到login_path和無限重定向循環。 – Richard