Symfony2的in_memory用户提供问题(Symfony2 in_memory users

2019-08-03 03:38发布

我有一个加载用户从应用程序的Symfony2 in_memory用户提供。 该security.yml如下:

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:
            users:
                admin: { password: mypassword, roles: [ 'ROLE_ADMIN' ] }

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

        login:
            pattern:  ^/demo/secured/login$
            security: false

        secured_area:
            pattern:    ^/
            anonymous: ~
            http_basic:
                realm: "MyApp Realm - Login"

    access_control:
        #- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY, requires_channel: https }
        #- { path: ^/_internal, roles: IS_AUTHENTICATED_ANONYMOUSLY, ip: 127.0.0.1 }
        - { path: ^/subscription/show, roles: ROLE_ADMIN }
        - { path: ^/send, roles: ROLE_ADMIN }

在我的本地开发环境(在Mac Pro的书),此配置按预期工作。 当我去的路线_/send__/subscription/show_ ,Symfony的问我要登录,如果我输入凭据管理输入mypassword我可以正确地查看页面。

但是,在生产环境(Debian的服务器),我不得不进行登录一看就知道路线,但相同的用户名和密码不起作用! HTTP基本身份验证的登录提示永远不会消失! 我无法理解。

为什么该配置不起作用? 和总体为什么在我的本地环境中它的工作原理,并在生产环境中是不?

我还看到一个问题,我想这是关系到: Symfony2的明文用户不工作 。 我已经尝试了所有的建议列在那里,但它们中的任何解决问题。

Answer 1:

解决了!

问题是,生产环境中运行PHP的FastCGI中与这样的配置,你必须添加以下行为.htaccess,才能有通过PHP的工作HTTP基本身份验证:

RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

再见!



文章来源: Symfony2 in_memory users provider issue