检查用户是否在symfony中被重定向?

And*_*eas 3 php symfony

我的symfony项目中有一条受限制的路由,所以如果我尝试去那里而不登录,我会被重定向到登录页面.

我想区分我何时尝试在没有登录的情况下进入禁区,以及何时直接进入登录页面.

有关如何在symfony中执行此操作的任何线索?

更新 通过区分我的意思是某种方式来检查用户是否通过直接转到该URL登陆登录页面,或者用户是否因为试图访问受限页面而登陆登录页面.

hco*_*oat 5

托马斯的解决方案很好.这是另一种选择.

知道这一点,并且只有在未登录的情况下才会被重定向,您可以使用其他参数重定向安全防火墙.

security.yml

...
secured_area:
            pattern:    ^/
            form_login:
                check_path: /login_check
                login_path: /login/restricted
...
Run Code Online (Sandbox Code Playgroud)

使用routing.yml

login:
    pattern:  /login
    defaults: { _controller: YourBundle:Default:login }

login:
    pattern:  /login/{restricted}
    defaults: { _controller: YourBundle:Default:login }
Run Code Online (Sandbox Code Playgroud)

调节器

public function loginAction($restricted = null)
{
...
Do something with $restricted
...
Run Code Online (Sandbox Code Playgroud)

现在,如果有人进入登录页面:

yoursite.com/login
Run Code Online (Sandbox Code Playgroud)

一切都会正常,$ restricted = null所以你知道他们是直接来的.

如果有人去:

yoursite.com/admin
Run Code Online (Sandbox Code Playgroud)

当他们没有登录时,他们将被重定向到:

yoursite.com/login/restricted
Run Code Online (Sandbox Code Playgroud)

在您的控制器$restricted中将设置,您将知道他们试图访问受限区域而无需身份验证.

当然,你可以改变restricted对你有意义的东西.