如何在包开发中使用Laravel/sanctum

How to use Laravel/sanctum in package development

我尝试在自定义 Laravel 包中使用 Laravel/Sanctum。 作为默认 Laravel 应用程序,我将其添加到作曲家文件中,添加了迁移并在路由文件中进行了设置。

出现下一条错误消息:

"Auth guard [sanctum] is not defined."

我希望甚至可以在另一个包中使用 sanctum?

Composer.json 文件:

"require": {
    "php": "7.4.*",
    "laravel/sanctum": "^2.2"
  },

路线文件:

Route::group(['middleware' => 'auth:sanctum'], function () {
Route::post('/approve', ['uses' => 'MemberRequestController@response', 'response' => 'approve'])->name('approve_member_request');
}

服务提供商

/**
     *
     */
    private function registerRoutes()
    {
        Route::group($this->routeConfig(), function () {
            $this->loadRoutesFrom(__DIR__ . '/../../routes/api.php');
        });
    }

    /**
     * @return string[]
     */
    private function routeConfig(): array
    {
        return [
            'prefix' => ums::path(),
            'namespace' => 'martijn\UMS\Http\Controllers',
            'middleware' => ['api', 'auth:sanctum']
        ];
    }

您应该发布 Laravel\Sanctum\SanctumServiceProvider

它将登记失踪的守卫。

在我的案例中,问题出在 RouteServiceProvider, 默认登录被重定向到 RouteServiceProvider::HOME 和 public const HOME = '/dashboard'; 我没有了,所以只用现有视图替换它。

在我手动删除文件夹 bootstrap/cache/ 的内容后开始工作

没有 cache/view/routes 清除帮助

在我的主机 DirectAdmin 中,我手动重新上传了供应商文件夹,并在遇到此错误后
Auth guard [sanctum] is not defined
我重新上传了 bootstrap 文件夹。
现在一切正常。