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
1class JsonWebToken 2 SECRET_KEY = Rails.application.secrets.secret_key_base. to_s 3 4 def self.encode(payload, exp = 24.hours.from_now) 5 payload[:exp] = exp.to_i 6 JWT.encode(payload, SECRET_KEY) 7 end 8 9 def self.decode(token) 10 decoded = JWT.decode(token, SECRET_KEY)[0] 11 HashWithIndifferentAccess.new decoded 12 end 13end
2のコード
ruby
1module JwtAuthenticator 2 require "jwt" 3 4 SECRET_KEY = Rails.application.secrets.secret_key_base 5 6 # 暗号化処理 7 def encode(user_id) 8 expires_in = 1.month.from_now.to_i # 再ログインを必要とするまでの期間を1ヶ月とした場合 9 preload = { user_id: user_id, exp: expires_in } 10 JWT.encode(preload, SECRET_KEY_BASE, 'HS256') 11 end 12 13 # 復号化処理 14 def decode(encoded_token) 15 decoded_dwt = JWT.decode(encoded_token, SECRET_KEY_BASE, true, algorithm: 'HS256') 16 decoded_dwt.first 17 end 18 19end
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。