2012-05-22 3 views
1

PHP 토닉 프레임 워크를 사용하고 있습니다. 이 예제를 시작점으로 사용했습니다. GitHub linkPHP REST 토닉 및 인증

쿠키를 기반으로 인증 방법을 추가하고 싶습니다. 그게 정확한 해결책입니까? 이전의 것은 다음과 같은 쿼리 문자열의 토큰 변수를 기반으로했습니다. /serviceName? token = XXXXXXXXxxXX * & 토큰은 10 초 동안 유효합니다.

물론 적절한 해결책은 아닙니다. 토큰이 모든 호출을 변경하기 때문에 브라우저 캐시를 사용할 수 없습니다. 아이디어?

답변

1

가능한 해결 방법은 HTTP 헤더를 사용하는 것입니다.

$urlToCall = '<get the link>'; 
$credentials = Crypt::createToken(); 
$reqHeaders = apache_request_headers(); 

// Configuring curl options extra:CURLOPT_HEADER => 1, 
$options = array(
    CURLOPT_RETURNTRANSFER => true, 
    CURLOPT_HTTPHEADER => array('Authorization: ' . $credentials) 
); 

$ch = curl_init($urlToCall); 
curl_setopt_array($ch, $options); 
$response = curl_exec($ch); 

/* 
//$header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE); 
//$header = substr($response, 0, $header_size); 
//$body = substr($response, $header_size); 

if (curl_errno($ch)) { 
    print curl_error($ch); 
} else { 
    list($headers, $content) = explode("\r\n\r\n", $response, 2); 
    foreach (explode("\r\n", $headers) as $hdr) { 
     header($hdr); 
    //echo $hdr . '<br>'; 
    //print_r($hdr); 
    } 
    echo $content; 
} 
*/ 

if (curl_errno($ch)) { 
    print curl_error($ch); 
} else { 
    header("Accept: " . $reqHeaders['Accept']); 
    $finfo = new finfo(FILEINFO_MIME); 
    header("Content-Type: " . $finfo->buffer($response)); 
    print $response; 
} 
curl_close($ch);