首页 > 解决方案 > 无法将令牌保存到 laravel 中的个人访问令牌表

问题描述

我在 Laravel 中的登录代码如下

            if (!$token = auth('api')->attempt($credentials)) {
                return response()->json(['error' => 'Unauthorized'], 401);
            }
            $infoUser = Auth::guard('api')->user();
            $personAccessToken = [
                'tokenable_type' => "App\Models\User",
                'tokenable_id' => $infoUser->id,
                'name' => $infoUser->name,
                'token' => $token,
            ];
            PersonalAccessToken::updateOrCreate(['tokenable_id' => $infoUser->id], $personAccessToken);

当我在邮递员上测试 API 时,它显示错误“ SQLSTATE[22001]: String data, right truncated: 1406 Data too long for column 'token' at row 1 (SQL: insert intopersonal_access_tokens ”。令牌值是从此函数生成的auth('api')->attempt($credentials)

表中的Token 列personal_access_tokens由 Laravel 创建,字符串长度为 64,并且是唯一的。如果我更改为文本,则此字段无法设置唯一。我该如何解决这个问题?大家可以帮帮我吗?

标签: laravel

解决方案


推荐阅读