为啥在 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部署的flask webapp上为每个用户实现唯一的会话[重复]