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;