我正在尝试制作一个使用摘要作为身份验证的API,当我使用这个命令通过curl命令行访问API时,它的工作是
curl --digest --user website:website http://localhost/api/test/users
但是当使用Guzzle6php库运行api客户端时,使用此代码
$handler = new GuzzleHttp'Handler'CurlHandler();
$stack = GuzzleHttp'HandlerStack::create($handler); // Wrap w/ middleware
$client = new GuzzleHttp'Client(['base_uri' => 'http://localhost', 'handler' => $stack]);
try {
$request = new GuzzleHttp'Psr7'Request('GET', $req_uri, [
'auth' => ['website', 'website', 'digest']
]);
$response = $client->send($request, ['timeout' => 2]);
} catch (Exception $e) {
echo $e->getMessage();
die();
}
return $response;
说,它不起作用
401未授权`response:{"status":false,"error":"Unauthorized"}
如何解决这个问题?以及如何以正确的方式实现自定义处理程序guzzlephp?
我也遇到了同样的问题,发现这可能取决于curl php扩展的版本。我没有可能升级它,所以我不得不自己处理摘要身份验证(基本上维基百科中的信息就足够了https://en.wikipedia.org/wiki/Digest_access_authentication)。
您发送第一个请求并获得代码为401的响应和"WWW-Authenticate"标头(其中包含生成哈希所需的一些值),然后只生成"Authorization"标头并在您的狂饮请求中使用它。
很抱歉,我现在不能提供一个代码示例,也许以后,如果你自己不做的话:)
我遇到了同样的问题,我注意到根本没有安装php curl扩展。安装后,摘要身份验证工作。安装扩展类型:
sudo apt-get install php-curl