2017-02-27 19 views
0

我試圖使用jwt寶石與我僅API Rails應用程序,我按照本指南:「jwt」gem可能有.decode()問題?

https://www.pluralsight.com/guides/ruby-ruby-on-rails/token-based-authentication-with-ruby-on-rails-5-api

我可以調用/authenticate終點,它給了我一個有效的標記。我的問題是,當我嘗試調用由before_action :authenticate_request保護的函數時,它在調用JsonWebToken.decode()時似乎失敗。

我可以驗證傳遞的令牌是否有效,並且我可以驗證祕密密碼是我想要使用的,並且我得到有效的JSON返回body。所以在這一點上,寶石如何運行似乎存在問題,但是當我運行HashWithIndifferentAccess.new(body)時似乎沒有任何反應。因爲它沒有引發內部例外,我不知道里面的失敗。

感謝所有有用的建議,

+0

我在幾個API服務中使用Ruby的Jwt,從來沒有這樣的問題。你會在這裏發佈實際生成的令牌以及祕密密碼嗎?另外,你使用的是哪個版本的Rails和Jwt? – lkartono

回答

0

好位跟蹤今晚過後,原來的問題是這個傢伙。

在前面引用的鏈接中,示例文件非常接近生產就緒,但有一些定製/調整需要完成。我注意到在authenticate_user.rb,我不得不提供電子郵件和密碼,並用我自己的班級(.user())替換通用的User類;我更新了,並且能夠登錄,那就是 - 或者我認爲......我無法讓API在我的響應頭中返回有效的令牌。在tl; dr的情況下,事實證明我也需要進行相同的定製並在authorize_api_request.rb.user())中替換User

感謝您的關注。我希望這種見解爲他人節省了一些麻煩。