【发布时间】:2015-08-04 08:14:28
【问题描述】:
这是我的 security.yml
security:
providers:
in_memory:
memory: ~
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
admin_login:
pattern: ^/admin/login$
http_basic: ~
admin:
pattern: ^/admin
form_login:
login_path: /admin/login
check_path: /admin/loginCheck
account:
pattern: ^/account
http_basic: ~
# form_login:
# login_path: /login
# check_path: /loginCheck
main:
anonymous: ~
一切正常,但是当我将 ^/account 防火墙更改为使用 form_login 而不是 http_basic 时,它会抛出一些异常:
1/2 LogicException in MainConfiguration.php line 333: The check_path "/loginCheck" for login method "form_login" is not matched by the firewall pattern "^/account".
2/2 InvalidConfigurationException in BaseNode.php line 313: Invalid configuration for path "security.firewalls.account": The check_path "/loginCheck" for login method "form_login" is not matched by the firewall pattern "^/account".
我知道 Symfony2 文档建议只使用一个且仅一个主防火墙,但此配置仅用于研究多个防火墙。
我认为的场景:
- 输入 ^/admin,因为 ^/admin 防火墙需要 form_login,所以它会重定向到 ^/admin/login 防火墙。
- ^/admin/login 防火墙需要 http_basic,因此用户需要输入他们的用户名和密码才能查看 ^/admin/login 表单。
- 输入 ^/account,因为 ^/account 防火墙需要 form_login,所以它会重定向到 ^/login(主防火墙)
不知道上面的场景是否正确?如何修复此错误?请帮帮我,谢谢!
【问题讨论】: