【问题标题】:Laravel - Send api_token within the headerLaravel - 在标题中发送 api_token
【发布时间】:2016-11-10 01:45:10
【问题描述】:

我正在为 Laravel 构建一个 API,我想在标题中发送 api_token 而不是表单帖子。这是已经内置的东西,还是我必须弄清楚如何创建自己的身份验证驱动程序?

【问题讨论】:

    标签: api laravel header lumen


    【解决方案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
      猜你喜欢
      • 2018-11-12
      • 2018-07-10
      • 2017-07-23
      • 2018-10-11
      • 2020-08-29
      • 1970-01-01
      • 1970-01-01
      • 2016-11-24
      • 2010-10-20
      相关资源
      最近更新 更多