Laravel Passport 无法验证我新生成的令牌

Posted

技术标签:

【中文标题】Laravel Passport 无法验证我新生成的令牌【英文标题】:Laravel Passport is failing to validate my newly generated token 【发布时间】:2019-02-03 22:47:56 【问题描述】:

尝试使用 Passport 7.0.1 访问 Laravel 5.6.35 后端中受 auth:api 中间件保护的端点时,我的应用程序突然停止工作。

问题是我注册和登录时它正在生成。

return Response::json([
    'token' => $user->createToken('foobar')->accessToken,
    'user' => $user
], HTTPResponse::$HTTP_OK);

Insomnia rest 在访问属于auth:api 中间件的路由时会显示以下内容。

“消息”:“未经身份验证。”

它一直工作到一个小时前,在我刷新数据库后它停止了。我删除并创建了一个新用户,注册了一个测试用户并尝试访问并将令牌作为Bearer 令牌和Accept 标头传递给application/json 的端点。我已经多次这样做了,每次刷新后总是运行php artisan passport:install --force

我不知道如何解决它。我在TokenGuard.php 文件中看到了失败的地方,但该怎么办?怎么突然停了?

【问题讨论】:

【参考方案1】:

问题的原因是因为我将另一个字段设置为 users 表的主键,这导致 Passport 的自动生成表出现错误。

【讨论】:

【参考方案2】:

刷新数据库后必须重新安装passport,才会生成Token

php工匠护照:安装

【讨论】:

抱歉没有提及。【参考方案3】:

如果您使用的是 Apache 服务器,请将此行添加到您的 httpd.conf 文件中。

SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1

【讨论】:

以上是关于Laravel Passport 无法验证我新生成的令牌的主要内容,如果未能解决你的问题,请参考以下文章

Laravel Passport 没有身份验证

无法找到 [Laravel\Passport\Client] 的工厂

Laravel Passport身份验证问题:始终返回未经身份验证的身份

获取经过身份验证的用户 Laravel/Lumen Passport

Laravel Passport 密码授予刷新令牌

Nuxtjs + Laravel Echo + Laravel Passport + Laravel WebSockets 无法从私人/状态通道获取事件