ruby-jwtを使おうと思い、参考にするページ下記2つを読み進めました。
- Rails API + JWT Authentication - Binar Academy - Medium
- JSON Web Token(JWT)を用いたAPIの認証の実装(Rails) - Qiita
上記2つのページに書かれているjwtのエンコードとデコードのメソッドを書いているコードを比較したところ、微妙な差異があり疑問を持ちました。
- Classで
require "jwt"
の記述なし - Moduleで
require "jwt"
の記述あり
この2点だけを見ると、Classの場合はrequire
不要で、Moduleの場合はrequire
が必要、と捉えることが可能かと思うのですが、この認識は正しいのでしょうか。
現状は高確率で正しくないとは思っています。
またはディレクトリ構造やgemによったり、どちらかのページのコードに誤りがあるのでしょうか。
いずれの場合にせよ、ご教示いただきたく存じます。
requireについてググってもストロングパラメータで使うrequireメソッドの使い方ばかりが出てきたので質問しました。
1のコード
ruby
class JsonWebToken SECRET_KEY = Rails.application.secrets.secret_key_base. to_s def self.encode(payload, exp = 24.hours.from_now) payload[:exp] = exp.to_i JWT.encode(payload, SECRET_KEY) end def self.decode(token) decoded = JWT.decode(token, SECRET_KEY)[0] HashWithIndifferentAccess.new decoded end end
2のコード
ruby
module JwtAuthenticator require "jwt" SECRET_KEY = Rails.application.secrets.secret_key_base # 暗号化処理 def encode(user_id) expires_in = 1.month.from_now.to_i # 再ログインを必要とするまでの期間を1ヶ月とした場合 preload = { user_id: user_id, exp: expires_in } JWT.encode(preload, SECRET_KEY_BASE, 'HS256') end # 復号化処理 def decode(encoded_token) decoded_dwt = JWT.decode(encoded_token, SECRET_KEY_BASE, true, algorithm: 'HS256') decoded_dwt.first end end
まだ回答がついていません
会員登録して回答してみよう