基本上我想要完成的是创建一个基于奏鸣曲用户的新登录表单,这是奏鸣曲电子商务中使用的 fos 用户实现。新的登录表单应该与原始登录表单相同,但布局不同。
我做了什么:
-创建了新的树枝文件
-添加了路由:
m2m_partner:
resource: "@ApplicationSonataUserBundle/Resources/config/routing/partnerlogin.xml"
prefix: /partner
内容:
<route id="m2m_partner_login" pattern="/login">
<default key="_controller">ApplicationSonataUserBundle:Partner:login</default>
</route>
- 在 security.yml 中添加了新的防火墙(非常类似于 'admin' 中的防火墙)
partner:
pattern: /partner(.*)
context: user
form_login:
provider: fos_userbundle
login_path: /partner/login
use_forward: false
check_path: /partner/login_check
failure_path: null
logout:
path: /partner/logout
invalidate_session: false
handlers: ['sonata.page.cms_manager_selector']
anonymous: true
switch_user: true
之后,当我填写好的凭据时,它会很好地登录我,但是当我输入错误的凭据时,它会将我重定向到 /login 而不是 /partner/login 并显示“错误凭据”消息。我该如何解决?我错过了什么吗?
编辑1:
我检查了管理员登录是如何进行的,发现表单操作与正常登录不同的控制器看起来与fos用户“检查”操作相同:
public function checkAction()
{
throw new \RuntimeException('You must configure the check path to be handled by the firewall using form_login in your security firewall configuration.');
}
我将它复制到我的控制器,然后在提交带有错误凭据的表单后,我得到的就是这个错误:
You must configure the check path to be handled by the firewall using form_login in your security firewall configuration.