Laravel - 在标题中发送 api_token
Posted
技术标签:
【中文标题】Laravel - 在标题中发送 api_token【英文标题】:Laravel - Send api_token within the header 【发布时间】:2016-11-10 01:45:10 【问题描述】:我正在为 Laravel 构建一个 API,我想在标题中发送 api_token 而不是表单帖子。这是已经内置的东西,还是我必须弄清楚如何创建自己的身份验证驱动程序?
【问题讨论】:
【参考方案1】:在我自己为此苦苦挣扎之后,我得到了它的工作。 你需要先按照这个小教程学习如何将 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 文件中通过将属性添加到“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();
,
请注意,我还将令牌添加到公共标头中,以便让它通过所有方法中使用的每个请求。
Vue.http.headers.common['Authorization'] = 'Bearer ' + this.id_token;
【讨论】:
【参考方案2】:如果您使用 API,则无需创建身份验证驱动程序,您需要向 API 端点发出请求。选择你喜欢的方法,提出请求,不要和你在网页上使用auth驱动的方式一样。
这是一个如何通过标头发送 $token 的示例。使用 cURL 和 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,
]);
我希望这会有所帮助!
【讨论】:
我明白了,谢谢,确实如此。我正在尝试在 Postman 中复制相同的内容,我该怎么做?我尝试在标头中传递 api_token、Authorization: Bearer 和 Bearer,但它似乎总是无法识别令牌。我做错了什么? 查看邮递员文档部分标题:getpostman.com/docs/requests以上是关于Laravel - 在标题中发送 api_token的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Laravel 在响应正文中发送 auth cookie?