我尝试通过结合 CouchDB 和 Httpful 的 RESTful API 对用户进行身份验证。
客户端将用户的凭据发送到我的服务器,服务器将它们转发到 CouchDB 服务器。
当我var_dump
做出响应时,我可以看到内容在那里,但我无法提取我想发送回客户端的 cookie。
我的服务器上的身份验证功能:
public function authenticate($request, $response)
{
$username = $request->getParsedBody()['username'];
$password = $request->getParsedBody()['password'];
$uri = "http://localhost:5984/_session";
$sessionToken = \Httpful\Request::post($uri)
->sendsJson()
->body('{"name":"'.$username.'", "password":"'.$password.'"}')
->send();
$cookie = $sessionToken->headers->headers[6];
return $response->withHeader('Set-Cookie', $cookie);
}
响应对象:
object(Httpful \ Response) # 56(13) {
["body"] => object(stdClass) # 58(3)
...
["raw_body"]
...
["headers"] => object(Httpful \ Response \ Headers) # 57(1) {
["headers": "Httpful\Response\Headers": private] => array(6) {
...
["set-cookie"] => string(85)"AuthSession=abc123; Version=1; Path=/; HttpOnly"
}
}
["raw_headers"]
...
["code"]
...
}
错误信息:
Cannot access private property Httpful\Response\Headers::$headers
我想知道如何Set-Cookie
使用 Httpful 访问该属性。我浏览了这个问题的网络,不幸的是,我似乎是唯一一个面临这个特殊问题的人。
我找到了一个解决方案:
我只需要将这两行添加到我的身份验证控制器中:
$myArray = array_values($sessionToken->_parseHeaders($sessionToken->raw_headers));
$cookie = $myArray[5];
_parseHeaders
我在 Httpful 的 API 文档中找到并结合array_values
.