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. *中,我没有问题。 对于这种现象有任何建议或解释。 任何解释对我都会有帮助!非常感谢。
答案 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后,来自前端的请求将再次起作用。也许这也可以解决您的问题。