laravel jetstream请求api路由中间件受保护的api:sanctum返回未经身份验证的响应

时间:2020-09-16 18:29:04

标签: laravel-sanctum laravel-8 inertiajs jetstream

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

SESSION_DOMAIN = mysite.test

登录不起作用,并且似乎存在中间件。 如果未设置此参数,则登录工作正常,因此当我使用Sanctum maiddleware 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圣所文档https://laravel.com/docs/8.x/sanctum。在没有喷射流的laravel项目7. *中,我没有问题。 对于这种现象有任何建议或解释。 任何解释对我都会有帮助!非常感谢。

1 个答案:

答案 0 :(得分:1)

我遇到了类似的问题,我无法验证前端的任何API请求。事实证明,生成的Kernel.php默认不包含用于会话cookie的Sanctum中间件-app/Http/Kernel.php中的you have to add it manually

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

执行完此API后,来自前端的请求将再次起作用。也许这也可以解决您的问题。