代码之家  ›  专栏  ›  技术社区  ›  Magiranu

如何在PHP中从Httpful响应对象中提取CouchDB cookie?

  •  -1
  • Magiranu  · 技术社区  · 7 年前

    我尝试通过RESTful API结合CouchDB和Httpful对用户进行身份验证。

    客户端将用户的凭据发送到我的服务器,服务器将其转发到CouchDB服务器。

    当我 var_dump

    我的服务器上的身份验证功能:

    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 属性。我在网上浏览了这个问题,不幸的是,似乎只有我一个人面临这个特殊的问题。


    我只需要将这两行添加到我的身份验证控制器中:

    $myArray = array_values($sessionToken->_parseHeaders($sessionToken->raw_headers));
    
    $cookie = $myArray[5];
    

    _parseHeaders 我在Httpful的API文档中找到了它,并将其与 array_values

    1 回复  |  直到 7 年前
        1
  •  1
  •   jmattheis zzz    7 年前

    Headers $sessionToken->headers

    set-cookie 你得到的标题:

    $sessionToken->headers['set-cookie'];