多个控制器中的 Symfony 3 登录表单
Symfony 3 login form in multiple controllers
我遵循了 this 关于如何在 Symfony 3 中构建登录表单的教程并且一切正常。
但是我想在多个页面(“/”和“/login”)上使用相同的登录表单。不幸的是,根据我在 security.yaml 中配置 "login_path" 和 "check_path" 的方式,我总是只能让这些页面中的一个工作。
所以要么
form_login:
login_path: login
check_path: login
或
form_login:
login_path: /
check_path: /
我尝试添加另一个专门用于登录页面的防火墙以同时使用两者,但没有成功,我在 /login 上的表单似乎会提交并重定向到 default_target_path,但是用户不会登录。我还尝试在控制器的函数 createForm 中设置 'action' 变量,使登录表单即使在索引页面上也提交到 /login,但这也不起作用.
关于如何解决这个问题有什么想法吗?
您是否尝试过使用不同的名称创建第二个条目?我不确定它是否有效,但技术上允许使用不同名称的不同提供商。并且没有要求他们实际上有不同的提供者或不同的实现。
security:
# ...
firewalls:
main:
# ...
form_login:
login_path: login
check_path: login
alternative
# ...
form_login:
login_path: /
check_path: /
如果用户未登录,您可以将他们重定向到登录页面。
//Assuming this is the action for the "/" route
public function indexAction($name)
{
//If not logged in
if (!$this->get('security.authorization_checker')->isGranted('IS_AUTHENTICATED_FULLY')) {
return $this->redirectToRoute('/login');
}
...//If logged in
}
您可以只呈现登录页面而不是重定向。
我遵循了 this 关于如何在 Symfony 3 中构建登录表单的教程并且一切正常。
但是我想在多个页面(“/”和“/login”)上使用相同的登录表单。不幸的是,根据我在 security.yaml 中配置 "login_path" 和 "check_path" 的方式,我总是只能让这些页面中的一个工作。
所以要么
form_login:
login_path: login
check_path: login
或
form_login:
login_path: /
check_path: /
我尝试添加另一个专门用于登录页面的防火墙以同时使用两者,但没有成功,我在 /login 上的表单似乎会提交并重定向到 default_target_path,但是用户不会登录。我还尝试在控制器的函数 createForm 中设置 'action' 变量,使登录表单即使在索引页面上也提交到 /login,但这也不起作用.
关于如何解决这个问题有什么想法吗?
您是否尝试过使用不同的名称创建第二个条目?我不确定它是否有效,但技术上允许使用不同名称的不同提供商。并且没有要求他们实际上有不同的提供者或不同的实现。
security:
# ...
firewalls:
main:
# ...
form_login:
login_path: login
check_path: login
alternative
# ...
form_login:
login_path: /
check_path: /
如果用户未登录,您可以将他们重定向到登录页面。
//Assuming this is the action for the "/" route
public function indexAction($name)
{
//If not logged in
if (!$this->get('security.authorization_checker')->isGranted('IS_AUTHENTICATED_FULLY')) {
return $this->redirectToRoute('/login');
}
...//If logged in
}
您可以只呈现登录页面而不是重定向。