Laravel - 在 header 内发送 api_token
Laravel - Send api_token within the header
我正在为 Laravel 构建一个 API,我想在 header 中发送 api_token 而不是 post 的形式。这是已经内置的东西,还是我必须去弄清楚如何创建我自己的身份验证 driver?
如果您正在使用 API,则不需要创建身份验证 driver,您需要向 API 端点发出请求。选择你喜欢的方式,提出请求,不要和你在网页上使用auth一样想driver。
这是一个如何通过 headers 发送 $token 的例子。使用 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,
]);
希望对您有所帮助!
在我自己为此苦苦挣扎之后,我开始工作了。
您需要先按照这个小教程学习如何为您的 laravel API 使用 api_token:
https://gistlog.co/JacobBennett/090369fbab0b31130b51
然后一旦你在用户 table 等中有了 api_token,你现在可以在每个请求的 header 中传递它。
我的 laravel 正在使用 Vueify 模板,即我有 /components/Comment.vue 等文件。
第一步是通过 blade 模板中的组件定义传递 属性 将用户 api_token 传递给 Vue 模板:
<comments id_token="{{ access()->user()->api_token }}"></comments>
然后在您的 .vue 文件中确保您接受 属性,方法是将其添加到 "props":
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();
},
请注意,我还在上面添加了令牌到公共 headers,以便让它通过所有方法中使用的每个请求。
Vue.http.headers.common['Authorization'] = 'Bearer ' + this.id_token;
我正在为 Laravel 构建一个 API,我想在 header 中发送 api_token 而不是 post 的形式。这是已经内置的东西,还是我必须去弄清楚如何创建我自己的身份验证 driver?
如果您正在使用 API,则不需要创建身份验证 driver,您需要向 API 端点发出请求。选择你喜欢的方式,提出请求,不要和你在网页上使用auth一样想driver。
这是一个如何通过 headers 发送 $token 的例子。使用 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,
]);
希望对您有所帮助!
在我自己为此苦苦挣扎之后,我开始工作了。 您需要先按照这个小教程学习如何为您的 laravel API 使用 api_token: https://gistlog.co/JacobBennett/090369fbab0b31130b51
然后一旦你在用户 table 等中有了 api_token,你现在可以在每个请求的 header 中传递它。
我的 laravel 正在使用 Vueify 模板,即我有 /components/Comment.vue 等文件。
第一步是通过 blade 模板中的组件定义传递 属性 将用户 api_token 传递给 Vue 模板:
<comments id_token="{{ access()->user()->api_token }}"></comments>
然后在您的 .vue 文件中确保您接受 属性,方法是将其添加到 "props":
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();
},
请注意,我还在上面添加了令牌到公共 headers,以便让它通过所有方法中使用的每个请求。
Vue.http.headers.common['Authorization'] = 'Bearer ' + this.id_token;