Security 您必须在安全防火墙配置中使用form_登录配置防火墙要处理的检查路径
我有webservice,它是我的“普通”用户的提供者。我想为我的管理员使用FosUserBundle。以上是我的安全配置。普通用户登录没有问题,但当我想以管理员身份登录时,我收到以下消息: “您必须在安全防火墙配置中使用form_登录配置防火墙要处理的检查路径。” 以下是我的安全配置:Security 您必须在安全防火墙配置中使用form_登录配置防火墙要处理的检查路径,security,symfony,provider,Security,Symfony,Provider,我有webservice,它是我的“普通”用户的提供者。我想为我的管理员使用FosUserBundle。以上是我的安全配置。普通用户登录没有问题,但当我想以管理员身份登录时,我收到以下消息: “您必须在安全防火墙配置中使用form_登录配置防火墙要处理的检查路径。” 以下是我的安全配置: security: encoders: Locastic\CustomUserBundle\Security\User\User: plaintext FOS\UserBundle\Model\
security:
encoders:
Locastic\CustomUserBundle\Security\User\User: plaintext
FOS\UserBundle\Model\UserInterface: sha512
providers:
fos_userbundle:
id: fos_user.user_provider.username_email
webservice:
id: locastic.user_provider
firewalls:
main:
pattern: ^/admin
form_login:
provider: fos_userbundle
login_path: fos_user_security_login
check_path: fos_user_security_check
csrf_provider: form.csrf_provider
logout: true
anonymous: true
remember_me:
key: "%secret%"
lifetime: 31536000 # 365 days in seconds
path: /
domain: ~ # Defaults to the current domain from $_SERVER
user-service:
pattern: ^/
logout:
path: /logout
anonymous: true
webservice-login:
check_path: /prijava-provjera
login_path: /prijavi-se
provider: webservice
always_use_default_target_path: true
default_target_path: /stanje-racuna
access_control:
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin, role: ROLE_ADMIN }
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: ROLE_ADMIN
我认为你需要把
form\u login
放在防火墙下(要么main
要么添加另一个)
主防火墙下的form_登录:
firewalls:
main:
pattern: ^/admin
form_login:
provider: fos_userbundle
login_path: fos_user_security_login
check_path: fos_user_security_check
csrf_provider: form.csrf_provider
logout: true
anonymous: true ....
form_在另一个防火墙下登录
firewalls:
main:
pattern: ^/admin
second_firewall:
pattern: ^/
form_login:
provider: fos_userbundle
login_path: fos_user_security_login
check_path: fos_user_security_check
csrf_provider: form.csrf_provider
logout: true
anonymous: true .....
模式:^/admin
这可能是你的问题开始的地方
尝试将此更改回^/
然后更改FosUserBundle的路线
# app/config/routing.yml
fos_user_security:
resource: "@FOSUserBundle/Resources/config/routing/security.xml"
prefix: /admin
fos_user_profile:
resource: "@FOSUserBundle/Resources/config/routing/profile.xml"
prefix: /admin/profile
fos_user_register:
resource: "@FOSUserBundle/Resources/config/routing/registration.xml"
prefix: /admin/register
fos_user_resetting:
resource: "@FOSUserBundle/Resources/config/routing/resetting.xml"
prefix: /admin/resetting
fos_user_change_password:
resource: "@FOSUserBundle/Resources/config/routing/change_password.xml"
prefix: /admin/profile
在某些情况下,我可以看到这是由composer安装symfony时生成的默认安全设置造成的 就我而言,在我的security.yml中,我有以下部分:
default:
anonymous: ~
由于这是一个包罗万象的工作方式,它干扰了FOSUserBundle处理路线的能力。只需将其删除,或者,如果您有自己指定的路由,请确保它没有处理相同的URL路径 您的代码仅在检查路径值部分出错 这是您的原始代码:
firewalls:
main:
pattern: ^/admin
form_login:
provider: fos_userbundle
login_path: fos_user_security_login
check_path: fos_user_security_check
csrf_provider: form.csrf_provider
logout: true
anonymous: true
你应该使用类似于:
firewalls:
main:
pattern: ^/admin
form_login:
provider: fos_userbundle
login_path: fos_user_security_login
check_path: /login_check
csrf_provider: form.csrf_provider
logout: true
anonymous: true
注意检查路径只有一个字符串作为值。如果您使用值fos_user_security_check,则您正在调用类并调用仅引发RuntimeError异常的方法,错误显示为“您必须使用安全防火墙配置中的form_login配置防火墙要处理的检查路径。”。因此,修复非常简单,不使用fos\u user\u security\u check值请不要在标题中添加标签信息。这里的标签系统非常擅长分类,不需要帮助。:-)请看。谢谢。可以在如何配置Fosuserbundle以使用两个防火墙上找到补充信息?我按照步骤操作时也出现了相同的错误。hi@zizoujab我已将SF 2.4更新为SF 2.8,无法登录。在中显示以下运行时异常,您必须在安全防火墙配置中使用form_登录配置防火墙要处理的检查路径。在/var/www/html/Soundbasics\u production/Soundbasics\u Symfony/src/Soundbasics/UserBundle/Controller/SecurityController.php中,第270行的/login\u check方法中。同时检查前面的答案,我认为您也需要更正缩进。是的,这里也有相同的问题!FOSUserBundle在启用此节的情况下不工作。