护照 Laravel 的 UUID 问题

问题描述 投票:0回答:3

我想在 Laravel Passport 中使用 UUID,而不是我的 Laravel 项目中的默认 id。

我在迁移中将所有

user_id
client_id
列更改为 uuid,并在
Passport::ignoreMigrations()
的注册方法中添加
AppServiceProvider

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

401 Unauthorized and in the response body message:Unauthenticated.



 
laravel rest laravel-5 laravel-passport
3个回答
4
投票

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

  1. AppServiceProvider
    register
    功能中添加:
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

你来了!

--------------------更新--------------------

Laravel 最终决定添加以下命令:

php artisan passport:install --uuids

所以这将解决问题。


3
投票
php artisan passport:install --uuids

0
投票

您必须将

user_id
中的
oauth_access_tokens
更改为
uuid
类型,请按照以下步骤操作:

创建一个迁移来更改表

oauth_access_tokens


php artisan make:migration alter_table_oauth_access_tokens

public function up()
{
    Schema::table('oauth_access_tokens', function (Blueprint $table) {
        $table->dropColumn('user_id');
    });
    Schema::table('oauth_access_tokens', function (Blueprint $table) {
        $table->uuid('user_id')->index()->nullable();
    });
}
© www.soinside.com 2019 - 2024. All rights reserved.