security - 您必须在安全防火墙配置中使用 form_login 配置要由防火墙处理的检查路径

标签 security symfony provider

我有一个网络服务,它是我的“常规”用户的提供者。我想为我的管理员使用 FosUserBundle。以上是我的安全配置。普通用户登录没有问题,但是当我想以管理员身份登录时,我收到此消息:

“您必须在安全防火墙配置中使用 form_login 配置要由防火墙处理的检查路径。”

这是我的安全配置:

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_login 置于防火墙下(main 或添加另一个防火墙)

主防火墙下的form_login:

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_login

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 .....

关于security - 您必须在安全防火墙配置中使用 form_login 配置要由防火墙处理的检查路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16874725/

相关文章:

mysql - 如何在 mysql 中使用 symfony 和 Doctrine 查看表中的分页?

git - 如何安装 Symfony 2.7?

flutter - 对多个页面使用相同的 riverpod 状态提供程序

java - 限制对 Java Servlet 的访问

security - 将客户端证书的 DN 传递给 Tomcat 中已部署的应用程序

security - 在 Github 上的开源项目上暴露 travis.yml 文件中的 s3 secret 访问 key 是否存在安全风险?

java - 如何确保 Provider<MyFacade> 在新的异步线程中返回新的 MyFacade?

php - strip_tags() 是否容易受到脚本攻击?

php - 将基本模板变量覆盖到另一个包 {Symfony 3 TWIG} 的子模板

flutter - 更改项目状态后如何更新列表? ( flutter 和提供者)