Http-аутентификация не работает на веб-сайте Linux - PullRequest
0 голосов
/ 26 октября 2011

У меня есть веб-сайт, размещенный на Linux, я пытаюсь использовать приведенный ниже код для http-аутентификации для доступа к одной конфиденциальной странице, но, похоже, это не работает, каждый раз, когда я ввожу имя пользователя и пароль, появляется окно аутентификацииснова!Кто-нибудь может сказать мне, где моя ошибка?

 <?php
 // User name and password for authentication

$username='username';
$password='password';


if (!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW']) ||
($_SERVER['PHP_AUTH_USER'] !=$username) || ($_SERVER['PHP_AUTH_PW'] !=$password)) 
{
 // The user name/password are incorrect so send the authentication headers
   header('HTTP/1.1 401 Unauthorized');
  header('WWW-Authenticate: Basic realm="My Web Page:The Freedom Square Of Internet"');
  exit('<h2>My Web page</h2>Sorry, you must enter a valid user name and password to access this page.');
  }
?>

1 Ответ

1 голос
/ 26 октября 2011

Вполне возможно, что ваш сервер «съел» заголовок «Авторизация», выплевывая содержимое $_SERVER, чтобы помочь вам лучше понять, что происходит.Какой сервер вы используете?

Вот решение mod_rewrite для Apache, если вы используете fastcgi и ваша проблема заключается в следующем: http://search.cpan.org/~mramberg/Catalyst-Runtime-5.80012/lib/Catalyst/Engine/FastCGI.pm#Authorization_header_with_mod_fastcgi_or_mod_cgi

RewriteCond %{HTTP:Authorization} ^(.+)
RewriteRule ^(.*)$ $1 [E=HTTP_AUTHORIZATION:%1,PT]

Тогда вы можете довольно простообработайте заголовок авторизации, если PHP не делает это за вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...