我正在创建一个使用Symfony 2.8
和FOSUserBundle
进行身份验证的网站。
我希望网站对任何人都是公开的,并且后台(前缀为/admin
)在登录验证后可以访问。
我只是不断得到错误:
登录方法"form_login"的check_path"/login_check"不是与防火墙模式"^/admin/(.*)"匹配。
我的app/config/security.yml
看起来像:
providers:
fos_userbundle:
id: fos_user.user_provider.username
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
admin:
pattern: ^/admin/(.*)
form_login:
provider: fos_userbundle
login_path: /login
check_path: /login_check
always_use_default_target_path: false
default_target_path: /admin
logout:
path: /logout
target: /login
anonymous: true
main:
anonymous: ~
access_control:
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
#- { path: ^/login_check, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin/, role: ROLE_ADMIN }
我知道form_login
有问题,但我就是无法真正理解…
PS:有人问过类似的问题,但没有很好的答案(或者对我有用的答案)
我认为您的模式应该是这样的:
admin:
pattern: ^/admin/