首页 > 解决方案 > 没有 Laravel Passport 的 Laravel API 返回 401(未授权)

问题描述

我创建没有护照的 api 令牌。首先,我将列添加api_tokenuser表中。接下来,当用户登录时,我创建新的 api 令牌并将此令牌保存在数据库中。接下来我添加到api.php代码:

Route::group(['middleware' => 'auth:api'], function()  {
    Route::post('action', 'APIController@action');
});

接下来我使用 axios 发送数据:

const api_token = '<?php echo $api_token ?>';
let options = {
    method: 'post',
    url: '/api/action',
    data: data,
    headers: {
        "X-CSRFToken": document.querySelector('meta[name="csrf-token"]').getAttribute('content')
        },
}
let params = {
    'api_token': api_token
}

axios(options,params)
.then(function (response) {
    console.log(response);
})
.catch(function (error) {
    console.log(error);
});

接下来AuthServiceProvider.php我添加了:

public function boot()
{
    $this->registerPolicies();
    Auth::extend('token', function ($app, $name, array $config) {
        return new TokenGuard(Auth::createUserProvider($config['provider']), $app->request);
    });
}

我用这篇文章。我仍然有错误:

401(未经授权)

编辑:

我改变了我的 axios:

    const api_token = '<?php echo $api_token ?>';
    let options = {
        method: 'post',
        url: '/api/action',
        data: mergedData,
        headers: {
            "X-CSRFToken": document.querySelector('meta[name="csrf-token"]').getAttribute('content'),
        },
        params: {
            'api_token': api_token
        }
    }
    axios(options)
    .then(function (response) {
        console.log(response);
    })
    .catch(function (error) {
        console.log(error);
    });

现在我在 GET 中发送令牌,但我仍然有错误:

http://127.0.0.1:8000/api/action?api_token=b005413b-3197-48ac-8747-32bbcf8b858f 401(未经授权)

标签: phplaravelapiauthenticationtoken

解决方案


推荐阅读