0

我在 session.php 文件中遇到了 'domain' => env ('SESSION_DOMAIN', null) 的问题。例如,在 .env 文件中设置 SESSION_DOMAIN 值时

SESSION_DOMAIN=mysite.test

登录不起作用,似乎有一个中间件。如果不设置此参数,登录工作正常,因此当我使用 sanctum 中间件 ex 调用 api 保护路由时。

Route::middleware(['auth:sanctum'])->group(function () {
    Route::get('/myroute', function () {
        return 'hello world!';
    });
});

我有未经身份验证的回复。如果使用 web.php 文件路由并插入相同的函数:

Route::middleware(['auth:sanctum'])->group(function () {
     Route::get('/api/myroute', function () {
         return 'hello world!';
    });
});

使用 api 前缀,它的工作正常。我关注了 laravel 8.x sanctum 文档https://laravel.com/docs/8.x/sanctum。在没有喷气流的 laravel 项目 7.* 中,我没有问题。对于这种现象有任何建议或解释。任何解释都会对我有所帮助!非常感谢。

4

1 回答 1

3

我遇到了一个类似的问题,我无法验证来自前端的任何 API 请求。原来生成的 Kernel.php 默认不包含会话 cookie 的 Sanctum 中间件 -你必须在你的app/Http/Kernel.php:

 'api' => [
        EnsureFrontendRequestsAreStateful::class, // <- Add and import this middleware
        'throttle:api',
        \Illuminate\Routing\Middleware\SubstituteBindings::class,
 ],

完成此 API 请求后,我的前端再次工作。也许这也可以解决您的问题。

于 2020-09-20T09:38:25.033 回答