首页 > 解决方案 > 护照Laravel的UUID问题

问题描述

我想在 Laravel 护照中使用 UUID 而不是我的 laravel 项目中的默认 id。

我在迁移中将所有user_idclient_id列更改为 uuid,并Passport::ignoreMigrations()AppServiceProvider.

当我通过在用户表中创建一个新的原始数据在邮递员中进行测试时,我在响应中得到了令牌,但是当我在安全路由中使用这个令牌时,我总是得到响应状态:

401 Unauthorized 并且在响应正文消息中:未验证。

谁能帮忙,我完全被封锁了

标签: laravelrestlaravel-5laravel-passport

解决方案


我为纠正这个问题所做的事情:

  1. AppServiceProviderregister函数添加:
Passport::ignoreMigrations()
  1. php artisan vendor:publish --tag=passport-migrations
  2. CreateOauthAuthCodesTable改为_
$table->uuid('id');
$table->primary('id');
$table->uuid('user_id')->index();

等等其他护照表和迁移

  1. 在 appServiceProvider 和 boot 方法中添加以下代码:
use Laravel\Passport\Client;
use Ramsey\Uuid\Uuid;

Client::creating(function (Client $client) {
    $client->incrementing = false;
    $client->id = \Ramsey\Uuid\Uuid::uuid4()->toString();
});

Client::retrieved(function (Client $client) {
    $client->incrementing = false;
});
  1. 然后我迁移我的表php artisan migrate:fresh
  2. 关键是不要忘记添加
protected $primaryKey = 'Id'; // in my case I capitalize id to Id

你在这!


推荐阅读