9

套餐:圣所

在请求获取数据时生成令牌后,它会抛出这样的错误

Illuminate\Database\QueryException: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'api_token' in   
'where clause' (SQL: select * from `users` where `api_token` = XAzuNGUeOJ8CXbIoGEWhBTtWIFr0lFr8jjwScXQ4B0Qxfmu
2cHm9LaUwGX96zy0AnXhLLcCnBFCodQaOlimit 1) in file
4

8 回答 8

23

转到 config/auth.php

并将守卫中的 api 数组更改为 sanctum 示例:

 'guards' => [
        'web' => [
            'driver' => 'session',
            'provider' => 'users',
        ],

        'api' => [
            'driver' => 'sanctum',
            'provider' => 'users',
            'hash' => false,
        ],
    ],
于 2020-08-07T12:38:26.027 回答
7

routes/api.php并使用这个

Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
    return $request->user();
});

代替

Route::middleware('auth:api')->get('/user', function (Request $request) {
    return $request->user();
});
于 2020-07-07T18:54:14.090 回答
2

在 api.php

Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
    return $request->user();
});

在 config/auth.php

'api' => [
    'driver' => 'sanctum',
    'provider' => 'users',
    'hash' => false,
],

之后,它将解决该问题。我已经把代码上传到我的GitHub了。https://github.com/ramseyjiang/laravel_8_api

于 2021-05-03T08:03:26.373 回答
1

导入EnsureFrontendRequestsAreStatefulkernel.php进行令牌验证

use Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful;

class Kernel extends HttpKernel
{

    'api' => [
               ------
               EnsureFrontendRequestsAreStateful::class,
               ------
             ],
}
于 2020-12-28T04:00:17.497 回答
0

运行迁移,然后检查,如果仍然存在问题,那么要么users表没有api_token字段,要么它没有在数组User内部的模型中定义。$fillable

于 2020-04-10T14:00:23.440 回答
0

1.为了回答这个问题,我绞尽脑汁,决定清除应用程序、配置和路由缓存,这对我有用。

  php artisan cache:clear

2.当您希望清除应用程序缓存时,您可以在控制台中运行上述语句。它的作用是该语句清除 storage\framework\cache 中的所有缓存。

  php artisan route:cache

3.这会清除您的路由缓存。因此,如果您添加了新路由或更改了路由控制器或操作,您可以使用它重新加载相同的。

  php artisan config:cache
于 2021-07-19T11:51:54.240 回答
0

您可以尝试为您的 api 路由添加“middleware(auth:sanctum)”。

例子:

Route::middleware('auth:sanctum')->get('products', function() {
      //code
})->name('api.products');
于 2021-04-16T12:54:16.353 回答
0

  1. php工匠缓存:清除
  2. php工匠配置:清除
  3. php工匠路线:清除

然后重新启动 Apache 和 Mysql(对于 XAMPP/WAMPP)并再次运行artisan serve 命令,它对我有用。确保你先阅读他们的文档

于 2021-07-14T09:12:41.410 回答