基本认证在本地主机中有效,但在生产服务器中失败

问题描述 投票:0回答:2

在PHP中,我有以下代码。

<?php
ob_start();
$valid_passwords = array ("matrixUlt" => "$ecurEh1FIVE");
$valid_users = array_keys($valid_passwords);
$user = $pass = null;
if(isset($_SERVER['PHP_AUTH_USER']) && isset($_SERVER['PHP_AUTH_PW']))
{
    $user = $_SERVER['PHP_AUTH_USER'];
    $pass = $_SERVER['PHP_AUTH_PW'];
}
$validated = (in_array($user, $valid_users)) && ($pass == $valid_passwords[$user]);
if(!$validated)
{
header('WWW-Authenticate: Basic realm="You need to be authenticated to access the resource!"');
header('HTTP/1.0 401 Unauthorized');
exit("Not authorized");
echo ob_get_clean();
}

当给定[("matrixUlt" => "$ecurEh1FIVE"]用户名:密码时,在本地主机上可以正常工作。但在LIVE服务器的生产环境中却一直显示auth对话框。有什么办法可以解决这个问题吗?

php basic-authentication
2个回答
1
投票

对不起,整个混乱的&混乱,我是...。运行CGIFastCGI 在生产中。所以,它是 不能使用HTTP AUTHENTICATION。 在PHP中运行这个FastCGI

StackOverflow的这个答案给了我提示 https:/stackoverflow.coma70533201786360。 我没有注意到这个问题,因为在php手册中没有这个东西,请检查你的服务器设置PHP_AUTH_USER和PHP_AUTH_PW,如果没有的话,对话框会一直问这个问题。


0
投票

检查你的服务器是否设置了PHP_AUTH_USER和PHP_AUTH_PW,如果没有,那么对话框就会一直问你要不要。

SetEnvIf Authorization .+ HTTP_AUTHORIZATION=$0 

希望能解决你的问题。

© www.soinside.com 2019 - 2024. All rights reserved.