好的,所以我知道如何通过防火墙这样做。我很好奇的是Symfony是如何在幕后进行的,以及如何手动复制。
我尝试过这样的事情:
return $this->redirect( '/login', 301 );
但是当我这样做时,它会失去
_security.main.target_path
因此,当用户登录时,他们不再被重定向到他们所在的页面。
如何以复制防火墙的方式重定向到登录,从而保留
_security.main.target_path
答案 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\AuthenticationException
。 Symfony\Component\Security\Http\Firewall\ExceptionListener
将处理它并重定向到设置了_security.main.target_path
的防火墙入口点。