我已经将jwt gem添加到gem文件中。我可以成功执行登录请求,并收到授权令牌。然后我使用授权令牌返回用户对象。这在开发中效果良好。
但是,在生产中,我无法使用授权令牌获取用户对象。我收到消息:没有可用的验证密钥。
我的搜索让我找到了这个,但这是为设计jwt我也遇到过这个,但没有那么大帮助。
来自heroku logs --tail --app stag
的信息对没有真正的帮助
2020-11-25T20:15:30.493583+00:00 app[web.1]: I, [2020-11-25T20:15:30.493522 #4] INFO -- : [398a1a9c-fae2-454a-b991-5a922a679103] [active_model_serializers] Rendered ActiveModel::Serializer::Null with Hash (0.07ms)
2020-11-25T20:15:30.493805+00:00 app[web.1]: I, [2020-11-25T20:15:30.493736 #4] INFO -- : [398a1a9c-fae2-454a-b991-5h922a679973] Completed 422 Unprocessable Entity in 1ms (Views: 0.5ms | Allocations: 1356)
如有任何帮助,我们将不胜感激,谢谢。
最后,我找到了我的案例的解决方案。我不知道它是否对你有效,以下是我所做的:
首先,我使用Rails.application.secrets.secret_key_base
作为JWT的密钥,在阅读了其他有同样问题但使用devise-jwt
的帖子后,我说Rails secrets中的这个属性可能在Heroku中返回nil,所以我决定创建自己的密钥,确切地说,我只使用了一个名为secret_key的环境变量,然后引用它,我应该在JWT中使用它。
希望这会有所帮助。