我正在为Laravel构建API,我想在标题中发送api_token而不是表单帖子。这是已经内置的东西,还是我必须找出如何创建自己的auth驱动程序的路线?
答案 0 :(得分:8)
在与自己挣扎了一下后,我开始工作了。 您需要首先关注如何使用api_token作为laravel API的小教程: https://gistlog.co/JacobBennett/090369fbab0b31130b51
然后,一旦你在users表等中有api_token,你现在可以在每个请求的标题中传递它。
我的laravel正在使用Vueify模板,即我在/components/Comment.vue等文件下。
第一步是通过将属性传递到刀片模板中的组件定义,将用户api_token传递给Vue模板:
<comments id_token="{{ access()->user()->api_token }}"></comments>
然后在.vue文件中确保您接受该属性,方法是将其添加到&#34; props&#34;:
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;
答案 1 :(得分:4)
如果您正在使用API,则无需创建auth驱动程序,则需要向API端点发出请求。选择您喜欢的方法并提出请求,在网页上使用auth驱动程序时不要以同样的方式思考。
这是一个如何通过标头发送$令牌的示例。使用cURL和Guzzle
$data = [
'value1' => 'value1',
'value2' => 'value2'
];
使用CURL
$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);
Guzzle
$headers = [
'Authorization' => 'Bearer '.$token
];
$client = new GuzzleHttp\Client();
$res = $client->request('POST', 'http://api.domain.com/endpoint',[
'form_params' => $data,
'headers' => $headers,
]);
我希望这有帮助!