Laravel 11 为 Sanctum 指定自定义模型

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

我需要在 Laravel 11 中为 Sanctum 指定自定义表名称和模式。这是因为我们使用多个模式。为此,我需要创建一个覆盖 PersonAccessToken 的自定义模型。

Sanctum 提供了指定模型的方法:


Sanctum::userPersonalAccessModelTokenModel(CustomPersonalAccessToken::class);


以前,该文件会进入 boot 方法中的 AuthServiceProvider.php,但在 Laravel 11 中,该文件不再存在。我需要知道如何让 Laravel 知道我想要使用的类。以下是可供参考的课程:


<?php

namespace App\Models;

use Laravel\Sanctum\PersonalAccessToken as SanctumPersonalAccessToken;

class CustomPersonalAccessToken extends SanctumPersonalAccessToken
{

    protected $table = 'vendorinv.PersonalAccessToken';
    
}

我已经尝试了文档中的解决方案,将其添加到服务提供商:


<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use Laravel\Sanctum\Sanctum;
use App\Models\CustomPersonalAccessToken;


class AppServiceProvider extends ServiceProvider
{
    /**
     * Register any application services.
     */
    public function register(): void
    {
        //
    }

    /**
     * Bootstrap any application services.
     */
    public function boot(): void
    {

        Sanctum::usePersonalAccessTokenModel(CustomPersonalAccessToken::class);

    }
}



我认为很明显 Sanctum 方法在提供程序中被忽略。任何帮助,将不胜感激。谢谢你

我收到的唯一错误是预期的,因为它试图到达错误的架构和表:


"message": "SQLSTATE[42S02]: Base table or view not found: 1146 Table 'websites.personal_access_tokens' doesn't exist (Connection: mysql, SQL: select exists(select * from `personal_access_tokens` where `tokenable_id` = 891) as `exists`)",


我需要它来达到:


vendorinv.PersonalAccessToken

任何帮助将不胜感激。谢谢你。

laravel laravel-sanctum stateless
1个回答
0
投票

错误在我这边,我正在使用数据库外观来检查我的登录方法中的令牌。所以当然这是检查了错误的数据库。当我改用新模型后,一切都正常了。感谢您的有用评论,他们为我指明了正确的方向。

© www.soinside.com 2019 - 2024. All rights reserved.