Man*_*zzi 5 security authentication in-memory roleprovider symfony
我有一个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 }
Run Code Online (Sandbox Code Playgroud)
在我的本地开发环境(Mac Book Pro)中,此配置按预期工作。当我去路线_/send_
或时_/subscription/show_
,Symfony要求我登录,如果我输入凭据admin和mypassword,我可以正确查看页面。
但是在生产环境(Debian服务器)中,我必须执行登录才能看到路由,但是相同的用户名和密码不起作用!HTTP基本身份验证登录提示永远不会消失!我听不懂
为什么该配置不起作用?总体而言,为什么在我的本地环境中它起作用而在生产环境中却不起作用?
我还看到一个我认为与以下问题有关的问题:Symfony2纯文本用户无法使用。我已经尝试过那里列出的所有建议,但是其中任何一个都可以解决问题。
解决了!
问题是生产环境在FastCGI中运行PHP,并且使用这种配置,您必须在.htaccess中添加以下行,以便通过PHP进行http基本身份验证:
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
Run Code Online (Sandbox Code Playgroud)
再见!
归档时间: |
|
查看次数: |
2698 次 |
最近记录: |