Symfony2 - 删除AcmeBundle演示会导致安全提供程序错误

Maj*_*ons 11 php symfony

我已经下载并安装了Symfony2标准版.我已经完成了github自述文件中详述的所有步骤,以删除作为框架演示的AcmeBundle.尝试访问控制台以仔细检查我的路由时:

$ php app/console router:debug
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

[Symfony\Component\Config\Definition\Exception\InvalidConfigurationException]  
The child node "providers" at path "security" must be configured. 
Run Code Online (Sandbox Code Playgroud)

当我在我的security.yml文件中取消删除security.providers时,我留下了:

jms_security_extra:
    secure_all_services: false
    expressions: true

security:
    encoders:
        Symfony\Component\Security\Core\User\User: plaintext

    role_hierarchy:
        ROLE_ADMIN:       ROLE_USER
        ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]

    providers:
        in_memory:
            memory:
                users:
                    user: { password: userpass, roles: [ 'ROLE_USER' ] }
                    admin: { password: adminpass, roles: [ 'ROLE_ADMIN' ] }

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

    access_control:
        #- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY, requires_channel: https }
        #- { path: ^/_internal/secure, roles: IS_AUTHENTICATED_ANONYMOUSLY, ip: 127.0.0.1 }
Run Code Online (Sandbox Code Playgroud)

我得到一个不同但相似的错误:

[InvalidArgumentException]                          
You must at least add one authentication provider.
Run Code Online (Sandbox Code Playgroud)

我不知道该怎么做才能解决它.有解决方案吗

小智 20

你需要提供,像这样的配置:

jms_security_extra:
    secure_all_services: false
    expressions: true

security:
    encoders:
        Symfony\Component\Security\Core\User\User: plaintext

    role_hierarchy:
        ROLE_ADMIN:       ROLE_USER
        ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]

    providers:
        in_memory:
            memory:
                users:
                    user:  { password: userpass, roles: [ 'ROLE_USER' ] }
                    admin: { password: adminpass, roles: [ 'ROLE_ADMIN' ] }

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

        login:
            security: false

        secured_area:
            anonymous: ~

    access_control:
        #- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY, requires_channel: https }
        #- { path: ^/_internal/secure, roles: IS_AUTHENTICATED_ANONYMOUSLY, ip: 127.0.0.1 }
Run Code Online (Sandbox Code Playgroud)

  • 应该真正更新文档以反映这一点.你的答案与简单地删除/删除这些条目完全不同. (4认同)
  • 在Github上添加了问题:https://github.com/symfony/symfony-standard/issues/434 (3认同)

Tam*_*man 10

对我来说,我可以获得的无异常的最小文件是:

security:
    firewalls:
        anonymous:
            anonymous: ~

    providers:
        in_memory:
            memory:
Run Code Online (Sandbox Code Playgroud)

Symfony 2.3.3.