在使用Symfony 2.8.14的项目中,我使用了一个非常基本的设置来启用Symfony中的基本HTTP身份验证,如http://symfony.com/doc/2.8/security.html所述
security.yml
security:
encoders:
Symfony\Component\Security\Core\User\User: plaintext
providers:
in_memory:
memory:
users:
myuser: { password: mypassword, roles: 'ROLE_USER' }
firewalls:
default:
anonymous: ~
http_basic: ~
access_control:
- { path: ^/myroute, roles: ROLE_USER }在访问本地服务器上的/myroute时,会提示使用HTTP提示符。但是,在输入正确的凭据后,它只会继续向我显示提示。
在远程服务器上,在输入正确的凭据后,将使用401状态代码对同一路由进行无限“重定向”。
这两个服务器都通过FastCGI使用PHP2.4运行Apache2.4。还有其他线程建议添加
# Sets the HTTP_AUTHORIZATION header removed by apache
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]由于Apache通过FastCGI运行FastCGI时遇到了特定问题,所以无法访问FastCGI。但是,这已经包含在symfony/standard-edition中(并且也存在于我的.htaccess中)。
我不知道还能尝试什么。
发布于 2016-11-21 16:30:41
http://php.net/manual/en/features.http-auth.php上的一个注释建议添加以下内容:
SetEnvIf Authorization .+ HTTP_AUTHORIZATION=$0这很有帮助。看起来,默认的.htaccess配置symfony/standard-edition是不够的(至少在某些环境中是这样)。
发布于 2016-11-21 16:28:05
请在防火墙下指定以下内容:
firewalls:
default:
pattern: ^/myroute
anonymous: false
provider: in_memory希望能帮上忙
发布于 2016-11-21 17:16:07
你必须这样做(转到新行)
providers:
in_memory:
memory:
users:
myuser:
{ password: mypassword, roles: 'ROLE_USER' }或者您也可以像这样解释数组
providers:
in_memory:
memory:
users:
myuser:
password: mypassword
roles: 'ROLE_USER'否则,myuser将被视为一个值为"{ password: mypassword,roles:'ROLE_USER‘}“的字符串。
https://stackoverflow.com/questions/40724676
复制相似问题