为啥在 Heroku 服务器上为 Laravel JWT 身份验证收到此错误

Posted

技术标签:

【中文标题】为啥在 Heroku 服务器上为 Laravel JWT 身份验证收到此错误【英文标题】:Why getting this error for Laravel JWT auth on heroku server为什么在 Heroku 服务器上为 Laravel JWT 身份验证收到此错误 【发布时间】:2020-10-17 00:36:11 【问题描述】:

调用任何 api 时出现此错误:

Argument 3 passed to Lcobucci\\JWT\\Signer\\Hmac::doVerify() must be an instance of Lcobucci\\JWT\\Signer\\Key, null given, called in /app/vendor/lcobucci/jwt/src/Signer/BaseSigner.php on line 44

我正在使用 tymondesigns/jwt-auth 和 laravel 进行 api 身份验证。 我在生成jwt:secret 后尝试运行这个php artisan optimize

我的 laravel 应用程序托管在带有 pgsql 的基本 heroku 服务器上

【问题讨论】:

php artisan config:clear 然后再次缓存php artisan config:cache 希望错误消失?如果没有,则通过php artisan jwt:secret 设置密钥 不工作,同样的错误 清除你的配置 【参考方案1】:

当您在实施JWT 之前上传应用程序并直接重新上传而不重新上传.env 文件时,您可能会收到此错误。

如果是这种情况,解决此问题的最简单方法是在 .env 文件中添加 JWT 密钥:

这里是一个例子:

JWT_SECRET=jghgvfuldMpw5i4039393939393372y98bEWumqd9ls7Uk8DEpr0gIhgftrf

或使用命令创建jwt 键:

php artisan jwt:secret

更改环境后不要忘记清除配置:

php artisan config:clear
php artisan config:cache

【讨论】:

JWT_SECRET=some_secret 添加到heroku config vars 解决了这个问题。

以上是关于为啥在 Heroku 服务器上为 Laravel JWT 身份验证收到此错误的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Heroku 上为 Django 应用程序设置数据库?

在 Heroku 上为 Node.js 应用程序强制使用 HTTPS

如何在 Heroku 上为每个测功机设置单独的 slug?

如何在使用heroku部署的flask webapp上为每个用户实现唯一的会话[重复]

在 Heroku 上为 Mongo Labs 数据库配置 Node.js 连接字符串

在单个服务器上为多个 Laravel 应用程序使用 Redis 队列