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?

如何在查询中发送和使用数组,laravel

如何使用 laravel 在变量中发送查询?

在 Laravel 中使用 Sendmail 发送电子邮件的正确配置是啥?

如何在 Laravel 5.2 中手动发送密码重置请求?

Laravel 5.3 - 避免在 phpunit 测试中发送松弛通知