【问题标题】:How to use Laravel/sanctum in package development如何在包开发中使用 Laravel/sanctum
【发布时间】:2020-08-15 05:33:57
【问题描述】:

我尝试在自定义 Laravel 包中使用 Laravel/Sanctum。 就像在默认的 Laravel 应用程序中一样,我将它添加到了 composer 文件中,添加了迁移并在路由文件中进行了设置。

出现下一条错误信息:

“未定义身份验证守卫 [sanctum]。”

我希望它甚至可以在另一个包中使用 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-7 include-guards package-development laravel-sanctum


    【解决方案1】:

    您应该发布Laravel\Sanctum\SanctumServiceProvider

    它将注册丢失的守卫。

    【讨论】:

    • 我将 serviceprovider 添加到我的包中,并将配置文件添加到我的配置中。谢谢!你节省了我的时间!
    【解决方案2】:

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

    没有缓存/视图/路由清除帮助

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        在我的情况下,问题在于RouteServiceProvider, 默认登录重定向到RouteServiceProvider::HOME 和公共const HOME = '/dashboard'; 我没有了,所以只用现有的视图替换它。

        【讨论】:

          猜你喜欢
          • 2022-10-13
          • 2021-06-21
          • 2018-03-08
          • 2021-01-14
          • 1970-01-01
          • 1970-01-01
          • 2021-03-11
          • 2021-04-05
          • 2016-03-14
          相关资源
          最近更新 更多