2016-07-07 60 views
2

我正在为Laravel构建一个API,并且我希望在标头内发送api_token而不是表单帖子。这是已经内置的东西,还是我必须去找出如何创建我自己的认证驱动程序的路线?Laravel - 在标头内发送api_token

回答

7

经过一段时间的努力,我得到了它的工作。 您需要首先按照有关如何使用api_token您laravel API这个小教程:一旦你在用户表等的api_token https://gistlog.co/JacobBennett/090369fbab0b31130b51

那么您现在可以通过这个在每个请求的头。

我的laravel正在使用Vueify模板,即我在/components/Comment.vue等文件下。

第一步是通过在刀片模板传递性质,通过组件定义,通过api_token到Vue的模板的用户:

<comments id_token="{{ access()->user()->api_token }}"></comments> 

然后在您.vue文件确保您通过添加接受财产它的“道具”:

export default { 
    data: function() { 
     return { 
      edit: false, 
      list: [], 
      comment: { 
       id: '', 
       name: '', 
       body: '' 
      } 
     }; 
    }, 

    props: ['id_token'], 

    created: function() { 
     Vue.http.headers.common['Authorization'] = 'Bearer ' + this.id_token; 

     this.fetchCommentList(); 
    }, 

注意上面,我还加了标记的共同头文件,以便将它经历在所有的方法中使用的进一步下跌每个请求。

Vue.http.headers.common['Authorization'] = 'Bearer ' + this.id_token; 
3

如果您正在使用您的API,则不需要创建auth驱动程序,您需要向API端点发出请求。选择你喜欢的方法,并提出请求,当你在网页上使用auth驱动程序时,不要以同样的方式思考。

这是如何通过标题发送$令牌的示例。的卷曲度和Guzzle

$data = [ 
    'value1' => 'value1', 
    'value2' => 'value2' 
]; 

,卷曲

$headers = [ 
    'Authorization: Bearer '.$token 
]; 

$ch2 = curl_init(); 
curl_setopt($ch2, CURLOPT_URL, 'http://api.domain.com/endpoint'); 
curl_setopt($ch2, CURLOPT_POST, 1); 
curl_setopt($ch2, CURLOPT_POSTFIELDS, $data); 
curl_setopt($ch2, CURLOPT_HTTPHEADER, $headers); 
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true); 
$result = curl_exec ($ch2); 
curl_close ($ch2); 

与狂饮

$headers = [ 
    'Authorization' => 'Bearer '.$token 
]; 

$client = new GuzzleHttp\Client(); 
$res = $client->request('POST', 'http://api.domain.com/endpoint',[ 
      'form_params' => $data, 
      'headers'  => $headers, 
]); 

我希望这有助于!

+0

我明白了,谢谢,它确实如此。我试图在Postman中复制同样的东西,我该怎么做?我尝试过在标题中传递api_token,Authorization:Bearer和Bearer,但它似乎总是无法识别令牌。我究竟做错了什么? – user1157885

+0

这是另一个问题....接受这个打开另一个。 – Sangar82

+0

请参阅邮递员文档部分标题:https://www.getpostman.com/docs/requests – Sangar82