Symfony登录重定向自身

时间:2015-10-06 04:13:27

标签: symfony

当我尝试登录时,页面会自动重定向。这是我得到的Firefox错误:

  

页面未正确重定向

     

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 个答案:

答案 0 :(得分:1)

form_login:
    login_path: fixed_app_authentication_homepage

登录后不是您重定向到的地方,而是实际登录的位置,并且当您在身份验证失败时重定向时,必须允许匿名用户。因此,如果您发现身份验证失败,您将获得无限的重定向行为。

您需要允许它为IS_AUTHENTICATED_ANONYMOUSLY

E.g。

- { path: /home, roles: IS_AUTHENTICATED_ANONYMOUSLY }

如果这不符合您的意图,您需要为login_path创建一个单独的页面,然后然后成功地重定向到您的安全/主页。