Laravel - 在标题内发送api_token

时间:2016-07-07 16:18:35

标签: api laravel header lumen

我正在为Laravel构建API,我想在标题中发送api_token而不是表单帖子。这是已经内置的东西,还是我必须找出如何创建自己的auth驱动程序的路线?

2 个答案:

答案 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,
]);

我希望这有帮助!