错误 - 您必须使用安全防火墙配置

时间:2017-09-11 20:34:49

标签: symfony fosuserbundle

你好,我在symfony项目中遇到了fosuserbundle

的问题

当我登录时,我发出此错误

You must configure the check path to be handled by the firewall using form_login in your security firewall configuration.

我尝试不同的代码并总是出现一些错误

我用:

symfony 3 FOSUserBundle 2.0

config.yml

fos_user:
    db_driver: orm # other valid values are 'mongodb' and 'couchdb'
    firewall_name: main
    user_class: AppBundle\Entity\User
    from_email:
        address: "testeapp@testapp.com"
        sender_name: "Test App"

路由

app:
    resource: '@AppBundle/Controller/'
    type: annotation

admin_area:
    resource: "@SonataAdminBundle/Resources/config/routing/sonata_admin.xml"
    prefix: /admin

fos_user:
    resource: "@FOSUserBundle/Resources/config/routing/all.xml"

安全

# To get started with security, check out the documentation:
# https://symfony.com/doc/current/security.html
security:

    # https://symfony.com/doc/current/security.html#b-configuring-how-users-are-loaded
    providers:
        in_memory:
            memory: ~


    firewalls:
        # disables authentication for assets and the profiler, adapt it according to your needs
        dev:
            pattern: ^/(_(profiler|wdt)|css|images|js)/
            security: false

        main:
            anonymous: ~
            # activate different ways to authenticate

            # https://symfony.com/doc/current/security.html#a-configuring-how-your-users-will-authenticate
            #http_basic: ~

            # https://symfony.com/doc/current/security/form_login_setup.html
            #form_login: ~

    encoders:
        FOS\UserBundle\Model\UserInterface: bcrypt

    role_hierarchy:
        ROLE_ADMIN:       ROLE_USER
        ROLE_SUPER_ADMIN: ROLE_ADMIN

    providers:
        fos_userbundle:
            id: fos_user.user_provider.username

    firewalls:
        main:
            pattern: ^/admin
            form_login:
                login_path: /login
                check_path: /login_check
                provider: fos_userbundle
                csrf_provider: form.csrf_provider
                
    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 }

在这个项目中我使用sonata admin bundle,可以干扰吗?

希望一些帮助thx

1 个答案:

答案 0 :(得分:0)

security.yml有一个重复的主防火墙,先删除并保留第二个,因为它包含解决问题的form_login

# To get started with security, check out the documentation:
# https://symfony.com/doc/current/security.html
security:    
    encoders:
        FOS\UserBundle\Model\UserInterface: bcrypt

    role_hierarchy:
        ROLE_ADMIN:       ROLE_USER
        ROLE_SUPER_ADMIN: ROLE_ADMIN

    providers:
        fos_userbundle:
            id: fos_user.user_provider.username

    firewalls:
        dev:
            pattern: ^/(_(profiler|wdt)|css|images|js)/
            security: false

        main:
            pattern: ^/admin
            form_login:
                login_path: /login
                check_path: /login_check
                provider: fos_userbundle
                csrf_provider: form.csrf_provider

    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 }

请查看doc了解更多详情。