Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 基本访问认证头_Php_Rest_Authentication_Zend Framework - Fatal编程技术网

Php 基本访问认证头

Php 基本访问认证头,php,rest,authentication,zend-framework,Php,Rest,Authentication,Zend Framework,我目前正在使用Zend框架在PHP中开发REST客户端,遇到了一个问题 我目前有两个虚拟服务,我正在测试;一个是'noauth',它不需要身份验证,只返回一些JSON;另一个是'auth',它需要身份验证,并返回更具体的JSON。直接从web访问这两种方式都不会出现问题,例如,导航到“”会在网页上显示JSON,而“”会显示一个对话框,要求用户登录 我的目标是能够从我的主web应用程序访问这些不同的服务。首先需要用户登录到此web应用程序。然后,他们将能够从该web应用程序调用不同的服务。我可以使

我目前正在使用Zend框架在PHP中开发REST客户端,遇到了一个问题

我目前有两个虚拟服务,我正在测试;一个是'noauth',它不需要身份验证,只返回一些JSON;另一个是'auth',它需要身份验证,并返回更具体的JSON。直接从web访问这两种方式都不会出现问题,例如,导航到“”会在网页上显示JSON,而“”会显示一个对话框,要求用户登录

我的目标是能够从我的主web应用程序访问这些不同的服务。首先需要用户登录到此web应用程序。然后,他们将能够从该web应用程序调用不同的服务。我可以使用以下方法轻松地让noauth工作:

$base_url = 'https://example.org';
$client = new Zend_Rest_Client($base_url);
$endpoint = '/example/dummy/noauth';
$response = $client->restGet($endpoint);
但是如果每次都不询问用户的用户名和密码,我就无法让“auth”一个正常工作。目前,我正在为此使用硬编码值,但最终,将是存储在会话中的用户用于登录的值。以下是我尝试过的一些方法:

$user = base64_encode('username:password');
$client->setHeaders('Authorization: Basic '.$user);
而且:

$client = new Zend_Http_Client();
$client->setAuth('username', 'password', Zend_Http_Client::AUTH_BASIC);

这些似乎都不起作用。有人对如何实现我需要的东西有什么想法吗?

您必须在REST对象上调用
getHttpClient()
,然后调用通常在
Zend\u Http\u Client()中的函数

下面是一个简单的例子:

$client = new Zend_Rest_Client($base_url);
$client->getHttpClient()->setAuth($username, $password, Zend_Http_Client::AUTH_BASIC);
...
通过这样做,它将使用变量中的用户名和密码,而不是每次用户想要访问页面时都询问用户。

可能重复的