HTTP身份验证基本不适用于URI中的参数

时间:2019-02-06 16:33:20

标签: php basic-authentication

我有一个API,我正在尝试进行基本身份验证以对其进行调用,这是对此GET请求的首次调用:

https://example.com/test/api/v1/api

浏览器将用户名和密码发送给我。我可以连接,但是如果我用这样的参数调用第二个请求:

https://example.com/test/api/v1/api/5

浏览器再次向我发送了一个用于连接用户和密码的模式。目前无法连接,用户名和密码未确认...

在.htaccess文件中,我有:

RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]

api.php文件包含:

if (!isset($_SERVER['PHP_AUTH_USER'])) {
    header('WWW-Authenticate: Basic realm="My Realm"');
    header('HTTP/1.0 401 Unauthorized');
    echo 'Authentification canceled';
    exit;
} else {
    $login = $_SERVER['PHP_AUTH_USER'];
    $pwd = $_SERVER['PHP_AUTH_PW'];

    if (isset($usersWS) && is_array($usersWS) && isset($usersWS[$login]) && $usersWS[$login] != "" && $usersWS[$login] == $pwd)
        //if ($login == "toto" && $pwd= "toto1234")
    {
        echo "connecte";
    }
    else
    {
        header('HTTP/1.0 401 Unauthorized');
        echo 'Authentification incorrecte';
        exit;
    }

我不知道怎么了? POST请求工作正常。

经过几次研究,我认为是我的.htaccess文件有问题。

当我发送此请求时:

https://example.com/test/api/v1/api.php?id=12

一切正常!但是有了这个请求:

https://example.com/test/api/v1/api/5

不起作用。

那么,如何在.htaccess中定义规则?

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

您不必使用PHP为您执行基本身份验证,您可以将所有内容都放入TRIVIA = input('TRIVIA: press enter to start') strike = int('3') strikesleft = ('strikes left: {} ').format(strike) score = int('0') scoregained = ('Your score is {}' ).format(score) Q1 = input('What is the diameter of the earth? ') if Q1 == ('7917.5'): print('correct!') input() score = score+1 print(scoregained) input() 文件中。为此,您必须生成用户/密码组合并将其放入服务器.htaccess上的文件中,然后在/path/to/.htpasswd文件中输入以下内容:

.htaccess