登录后重定向有两个问题


Two problems when redirecting after login

我在symfony2项目上使用FOSUserBundle。用户可以登录和注销,一切工作正常。

"后端路由"如下:

/backend

重定向到:

/backend/login

第一个问题:

用户直接呼叫登录页面:

/backend/login

他被重定向到起始页,而不是成功登录后的/backend

第二个问题:

用户被重定向到检查凭据的URL:

/backend/login_check

一些浏览器保存这个URL,所以它进入自动完成,用户不认识到他正在调用backend/login_check,因为它重定向到login。然而,问题是,在成功登录后,symfony2试图将用户重定向到路由check_login,该路由失败,并且大多数时间导致再次显示登录窗口。

security.yml

firewalls:
    login_firewall:
        pattern:    ^/backend/login$
        anonymous:  ~
    backend:
        pattern:    ^/backend
        form_login:
            provider: fos_userbundle
            login_path: /backend/login
            check_path: /backend/login_check
            #use_forward: true

routing.yml

login:
    pattern:   /backend/login
    defaults:  { _controller: VendorNameBundle:User:login }
login_check:
    pattern:   /backend/login_check

我怎样才能解决这两个问题?

首先,删除login_firewall。你不需要它。相反,使用下面所描述的access_control

然后,您可以为backend防火墙使用default_target_path选项:

backend:
    pattern:    ^/backend
    form_login:
        provider: fos_userbundle
        login_path: /backend/login
        check_path: /backend/login_check
        default_target_path: /backend

点击这里查看更多