首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel圣地令牌认证在模型绑定之后运行。

Laravel圣地令牌认证在模型绑定之后运行。
EN

Stack Overflow用户
提问于 2020-12-02 15:31:14
回答 1查看 1.3K关注 0票数 2

TL;DR:

如果承载令牌请求使用路由模型绑定但使用不正确的令牌访问端点,则响应应该是401而不是404。不过,它是404,因为在检查令牌之前,模型是解析的。

环境:

8

  • Sanctum

  • bearer令牌-API请求的身份验证;不存在SPA involved.

  • using隐式route-model-binding

我的问题:

例如,使用此api路由:

代码语言:javascript
复制
//routes/api.php
Route::middleware('auth:sanctum')->group(function () {
    Route::get('surveys/{survey:uuid}', [SurveyController::class, 'getSurveyDetails']);
});

当使用不正确的承载令牌和不存在的调查uuid请求此路由时,它不会返回未经身份验证的401,而是返回404,因为它找不到所请求的模型。

在我看来,似乎是一个安全问题,因为没有经过身份验证,请求就可以证明ID是否存在。

我尝试过的:

如本文所述:https://github.com/laravel/framework/issues/6118

\Illuminate\Routing\Middleware\SubstituteBindings中间件负责解析路由模型绑定.

但是,还不完全清楚它是应该在任何身份验证/授权操作之前还是之后运行。

另外,根据封装代码,\Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful-middleware应该负责验证承载令牌。

据我所知,它还将其设置为中间件优先级列表的首位。

代码语言:javascript
复制
//Laravel/Sanctum/src/SanctumServiceProvider
protected function configureMiddleware()
    {
        $kernel = $this->app->make(Kernel::class);

        $kernel->prependToMiddlewarePriority(EnsureFrontendRequestsAreStateful::class);
    }

根据这一点,我还尝试在Http/Kernel.php中配置优先级列表,以确保这种行为:

代码语言:javascript
复制
//App/Http/Kernel.php
protected $middlewarePriority = [
        \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
        \Illuminate\Routing\Middleware\SubstituteBindings::class,
    ];

不幸的是,它继续返回一个404而不是401。在解析模型之前,应该检查令牌。

有什么想法吗?

谢谢你的暗示。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-16 12:35:15

对于遇到类似问题的任何人:解决方案是将\App\Http\Middleware\Authenticate::class中间件添加到最顶层的$middlewarePriority-array 中。

这样做,数组应该如下所示:

代码语言:javascript
复制
//App/Http/Kernel.php
protected $middlewarePriority = [
    \App\Http\Middleware\Authenticate::class,
    \Illuminate\Routing\Middleware\SubstituteBindings::class,
];

这样,在处理任何其他内容之前,始终会检查身份验证。

希望这个能帮到别人。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65111155

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档