Как использовать HTTP-аутентификацию для определенного URL-адреса (не для каталога) - PullRequest
1 голос
/ 12 ноября 2008

У меня есть файл htaccess, который использует mod_rewrite для перенаправления / controller на /index.php?controller=%controller%

Как это:

# Various rewrite rules.
<IfModule mod_rewrite.c>
  RewriteEngine on

  # Rewrite current-style URLs of the form 'index.php?controller=x&action=y'.
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^(.*)$ index.php?controller=$1 [L,QSA]
</IfModule>

Теперь мне нужно сделать так, чтобы ОДИН из контроллеров работал с HTTP-аутентификацией. Я не спрашиваю, является ли это лучшим способом сделать что-то, я просто спрашиваю, как это сделать.

Пример:

http://www.example.com/ - It requires no auth
http://www.example.com/secret - requires auth

Ответы [ 2 ]

4 голосов
/ 12 ноября 2008
<Location /secret>
  AuthName localhost
  AuthType Basic
  AuthUserFile <file>
  Require valid-user
</Location>
1 голос
/ 12 ноября 2008

Я использовал PHP для этого:

if (in_array($controllerString, $configuration['protected']))
{
    $authenticated = false;
    if (!isset($_SERVER['PHP_AUTH_USER'])) {
        header('WWW-Authenticate: Basic realm="My Realm"');
        header('HTTP/1.0 401 Unauthorized');
        echo 'You are unatuhorized to access this section of the website.';
    } else if ($_SERVER['PHP_AUTH_USER'] == 'admin' && $_SERVER['PHP_AUTH_PW'] == 'admin'){
        $authenticated = true;
    }

    if (!$authenticated)
    {
        unset($_SERVER['PHP_AUTH_USER']);
        die();
    }
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...