【发布时间】:2014-03-10 18:27:55
【问题描述】:
我正在尝试在 Symfony 2 中设置后端和前端防火墙系统。我有两个登录表单,一个用于前端,另一个用于管理控制面板。不同的供应商等等。我的配置如下:
security:
firewalls:
backend:
pattern: ^/admin
anonymous: true
provider: admin_users
form_login:
login_path: /admin/login
check_path: /admin/login_check
default_target_path: /admin
secured_area:
pattern: ^/
provider: normal_users
anonymous: true
form_login: ~
access_control:
- { path: ^/admin/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin, roles: ROLE_ADMIN }
- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
还有我的 routing.yml:
login:
path: /login
defaults: { _controller: MyFrontendBundle:Default:login }
login_check:
path: /login_check
admin_login:
path: /admin/login
defaults: { _controller: MyBackendBundle:Default:login }
admin_login_check:
path: /admin/login_check
看起来不错,但我遇到以下错误:找不到路径“/admin/login_check”的控制器。可能你忘记在路由配置中添加匹配的路由了
有什么想法吗? :)
【问题讨论】:
-
我猜你的模式应该是
pattern: ^/admin.* -
这条路线是否出现在
app/console router:debug? -
如果您在后端防火墙中使用此模式:
pattern: /admin/.* -
不,模式似乎不是问题。
-
当我尝试使用具有重叠 url 模式的防火墙并且第一个防火墙没有 check_path(我在第一个防火墙中使用 http_basic)和第二个使用 form_login 时,我遇到了类似的问题。您的 url 映射似乎是正确的,请检查您的管理控制器中是否有正确的 check_path (/admin/login_check)。