Symfony2手动重定向到登录,保留_security.main.target_path

时间:2016-01-06 04:00:45

标签: php symfony

好的,所以我知道如何通过防火墙这样做。我很好奇的是Symfony是如何在幕后进行的,以及如何手动复制。

我尝试过这样的事情:

return $this->redirect( '/login', 301 );

但是当我这样做时,它会失去

_security.main.target_path

因此,当用户登录时,他们不再被重定向到他们所在的页面。

如何以复制防火墙的方式重定向到登录,从而保留

_security.main.target_path

2 个答案:

答案 0 :(得分:0)

尝试使用以下代码

在security.yml文件中添加设置

#app/config/security.yml
security:
    firewalls:
        main:
            form_login:
                always_use_default_target_path: true
                target_path_parameter: redirect_url

您的登录表单必须包含以下输入标记

<input type="hidden" name="_target_path" value="account" />

喜欢你的表格

<form action="{{ path('login_check') }}" method="post">
    <label for="username">Username:</label>
    <input type="text" id="username" name="_username" value="{{ last_username }}" />

    <label for="password">Password:</label>
    <input type="password" id="password" name="_password" />

    <input type="hidden" name="_target_path" value="account" />

    <input type="submit" name="login" />
</form>

答案 1 :(得分:0)

我认为你“只是”可以抛出一个Symfony\Component\Security\Core\Exception\AuthenticationExceptionSymfony\Component\Security\Http\Firewall\ExceptionListener将处理它并重定向到设置了_security.main.target_path的防火墙入口点。