security.yml 一直要求 check_path 已经提供了
security.yml keeps asking for check_path which has already been supplied
所以我有一个应用程序,它使用 FOSUserbundle 进行用户管理,使用 HWIOAuthBundle 进行 OAuth 身份验证,目前只有 Facebook。
当我想通过 FOSUserBundle 模板提供的登录表单登录时,我一直收到此错误。
You must configure the check path to be handled by the firewall using form_login in your security firewall configuration.
但是当我使用 facebook 按钮登录时,我没有收到这个错误。
下面是我的security.yml文件
security:
encoders:
FOS\UserBundle\Model\UserInterface: bcrypt
# Roles being defined
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: ROLE_ADMIN
# http://symfony.com/doc/current/book/security.html#where-do-users-come-from-user-providers
providers:
in_memory:
memory: ~
fos_userbundle:
id: fos_user.user_provider.username
firewalls:
# disables authentication for assets and the profiler, adapt it according to your needs
secured_area:
anonymous: ~
logout: ~
oauth:
resource_owners:
facebook: "/login/check-facebook"
login_path: /login
use_forward: false
failure_path: /login
oauth_user_provider:
service: my.custom.user_provider
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
main:
pattern: .*
provider: fos_userbundle
form_login:
login_path: fos_user_security_login
check_path: fos_user_security_check
use_forward: false
failure_path: null
logout:
path: fos_user_security_logout
target: /
anonymous: true
http_basic:
realm: "Reviews"
# main:
# activate different ways to authenticate
# http_basic: ~
# http://symfony.com/doc/current/book/security.html#a-configuring-how-your-users-will-authenticate
# form_login: ~
# http://symfony.com/doc/current/cookbook/security/form_login_setup.html
# Access controls
access_control:
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/view, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin/, role: ROLE_ADMIN }
- { path: ^/create, role: ROLE_USER}
- { path: ^/edit, role: ROLE_USER}
- { path: ^/delete, role: ROLE_USER}
我猜你的表单登录被 secured_area
防火墙拦截了。
您有 3 个防火墙:
secured_area
匹配所有内容,因为默认模式是 /*
dev
可能从未达到,因为 secured_area
已经匹配
main
匹配所有(因为模式),但从未达到
Symfony 将使用第一个匹配的防火墙进行身份验证,并且由于 secured_area
没有为登录表单配置它不会工作。您可以合并两个防火墙(基本上将 oauth
部分复制到 main
,但单独的登录机制可能仍然会干扰。
如果两个登录都针对不同的部分(例如用户的 facebook 和仅供管理员用户访问的后端的表单登录),您可以分配不同的模式并检查分析器栏(屏幕底部的工具栏)开发模式)如果使用了正确的防火墙。
无论如何我都会更改防火墙的顺序。您可以通过将 dev
移动到顶部来确保它得到处理,并确保将最通用的防火墙(使用 /*
模式)移动到底部以确保它捕获以前未被另一个处理的所有路由防火墙。
所以我有一个应用程序,它使用 FOSUserbundle 进行用户管理,使用 HWIOAuthBundle 进行 OAuth 身份验证,目前只有 Facebook。
当我想通过 FOSUserBundle 模板提供的登录表单登录时,我一直收到此错误。
You must configure the check path to be handled by the firewall using form_login in your security firewall configuration.
但是当我使用 facebook 按钮登录时,我没有收到这个错误。
下面是我的security.yml文件
security:
encoders:
FOS\UserBundle\Model\UserInterface: bcrypt
# Roles being defined
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: ROLE_ADMIN
# http://symfony.com/doc/current/book/security.html#where-do-users-come-from-user-providers
providers:
in_memory:
memory: ~
fos_userbundle:
id: fos_user.user_provider.username
firewalls:
# disables authentication for assets and the profiler, adapt it according to your needs
secured_area:
anonymous: ~
logout: ~
oauth:
resource_owners:
facebook: "/login/check-facebook"
login_path: /login
use_forward: false
failure_path: /login
oauth_user_provider:
service: my.custom.user_provider
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
main:
pattern: .*
provider: fos_userbundle
form_login:
login_path: fos_user_security_login
check_path: fos_user_security_check
use_forward: false
failure_path: null
logout:
path: fos_user_security_logout
target: /
anonymous: true
http_basic:
realm: "Reviews"
# main:
# activate different ways to authenticate
# http_basic: ~
# http://symfony.com/doc/current/book/security.html#a-configuring-how-your-users-will-authenticate
# form_login: ~
# http://symfony.com/doc/current/cookbook/security/form_login_setup.html
# Access controls
access_control:
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/view, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin/, role: ROLE_ADMIN }
- { path: ^/create, role: ROLE_USER}
- { path: ^/edit, role: ROLE_USER}
- { path: ^/delete, role: ROLE_USER}
我猜你的表单登录被 secured_area
防火墙拦截了。
您有 3 个防火墙:
secured_area
匹配所有内容,因为默认模式是/*
dev
可能从未达到,因为secured_area
已经匹配main
匹配所有(因为模式),但从未达到
Symfony 将使用第一个匹配的防火墙进行身份验证,并且由于 secured_area
没有为登录表单配置它不会工作。您可以合并两个防火墙(基本上将 oauth
部分复制到 main
,但单独的登录机制可能仍然会干扰。
如果两个登录都针对不同的部分(例如用户的 facebook 和仅供管理员用户访问的后端的表单登录),您可以分配不同的模式并检查分析器栏(屏幕底部的工具栏)开发模式)如果使用了正确的防火墙。
无论如何我都会更改防火墙的顺序。您可以通过将 dev
移动到顶部来确保它得到处理,并确保将最通用的防火墙(使用 /*
模式)移动到底部以确保它捕获以前未被另一个处理的所有路由防火墙。