【问题标题】:Why is my $request->user() null when I am making Oauth2 requests with passport Laravel当我使用护照 Laravel 发出 Oauth2 请求时,为什么我的 $request->user() 为空
【发布时间】:2022-08-16 00:56:16
【问题描述】:

由于某种原因,我的用户请求为空。

public function handle($request, $next, ...$scopes)
{
    dd($request->user());
}

我收到 [即使我在那里拥有所有凭据并且有效,也为 null][1] [我的内核.php][2]

[我在 auth.php 中的守卫][3]

[我的中间件现已更新][4]

所以从我以前的问题开始,现在我得到了

{ \"消息\": \"未经身份验证。\" } [1]:https://i.stack.imgur.com/efdax.png [2]:https://i.stack.imgur.com/L1lUI.png [3]:https://i.stack.imgur.com/TulwQ.png [4]:https://i.stack.imgur.com/F1AEE.png

  • 您是否将auth 中间件应用于您尝试到达的路线?你的默认守卫是什么?这个中间件是什么,它是如何应用于路由的?
  • Route::middleware([\'auth\',\'scopes:view-products\'])->group(function () {} Route::middleware([\'auth:api\',\'scopes: view-products\'])->group(function () {} 我没有那里的身份验证你是对的我尝试了我发送 rn 和我的请求现在根本没有通过
  • 您尝试过什么来解决问题?请通过编辑为您的问题添加所有说明
  • 请永远不要分享隐藏在屏幕截图中的代码。通常,代码最好以文本形式共享。另外,分享您解决问题的尝试

标签: php laravel api laravel-passport


【解决方案1】:

我从your latest comment there 注意到,你的意思是单数scope:view-products 而不是复数scopes

另外,我在 laravel 9.x 文档链接下面分享了。

我建议您追溯您的步骤,从第 1 步到当前设置 Laravel Passport。我认为遗漏了一两个步骤 - 例如防护设置或示波器设置。或者最好猜测上面提到的错字。

希望这可以帮助。

来源:https://laravel.com/docs/9.x/passport#check-for-any-scopes

编辑:发行人发现并解决了范围界定问题,as mentioned here。做得好!

【讨论】:

  • 我认为作用域/作用域在这里没有任何作用,因为它们都是实际功能,如果你只使用 1 个作用域会产生相同的结果 + 我设置了保护并且还设置了这里没有提到的作用域我将通过编辑问题来添加它:)
  • 是的,我相信你是对的,范围/范围不应该是一个问题。根据您更新的问题(现在使用第三个参数,...$scopes),恐怕我以前没有采取过这样的设置,因为它看起来像是在中间件本身中?还要补充一点,如果您有 sentry 集成或检查 laravel.log 文件可能会为您的错误 500 提供更多线索。
【解决方案2】:

我糟糕的一切正常我应该使用不同类型的范围https://laravel.com/docs/9.x/passport#client-credentials-grant-tokens 例子:

Route::middleware(['client:view-products', 'client.auth'])->group(function () {}

【讨论】:

    猜你喜欢
    • 2021-07-02
    • 2019-09-13
    • 1970-01-01
    • 1970-01-01
    • 2015-12-24
    • 2022-01-12
    • 2019-08-13
    • 1970-01-01
    • 2013-01-05
    相关资源
    最近更新 更多