2012-05-22 2 views
1

Я использую фреймворк PHP Tonic. Я взял этот пример в качестве отправной точки: GitHub linkPHP REST Тоник и аутентификация

Я хотел бы добавить метод auth на основе cookie. Это правильное решение? Предыдущий один был основан на символической переменной в строку запроса что-то вроде: /SERVICENAME маркер = ХХХХХХХХХХХХ * * & Маркер был действителен в течение 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); 
Смежные вопросы