web-dev-qa-db-ja.com

ベアラートークンをレールのヘッダーに渡す方法は?

私のRailsアプリケーションでは、トークンAuthorization: Token token='aUthEnTicAtIonTokeN'をリクエストのヘッダーに渡して取得できます

authenticate_with_http_token do |token, options|
 @auth_token = token
end

しかし、トークンをAuthorization: Bearer token='aUthEnTicAtIonTokeN'として渡した場合、上記のメソッドではnilとしてトークンを取得します。

Railsアプリケーションのヘッダーから渡されたベアラートークンを取得するにはどうすればよいですか?

13
sat's

次のような方法でBearerトークンを取得できます。

def bearer_token
  pattern = /^Bearer /
  header  = request.headers['Authorization']
  header.gsub(pattern, '') if header && header.match(pattern)
end

また、ヘッダーを設定するときは、次のようにする必要があります。

Authorization: Bearer 'aUthEnTicAtIonTokeN'
19
Alex.U

メソッドはそのまま正しく機能します。リクエストで正しい引用符を使用する必要があります。

単一引用符'は、二重引用符"と同じように機能しません。

参考までに、Railsは、Authorization:メソッドから次のいずれかの形式でauthenticate_with_http_tokenヘッダーのトークンを処理します。

Bearer "token_goes_here"
Bearer token_goes_here
Bearer token="token_goes_here"
Bearer token=token_goes_here
Token token="token_goes_here"
Token token=token_goes_here
Token "token_goes_here"
Token token_goes_here

このリストは網羅的ではないと思いますが、うまくいけば何ができるのかを理解できれば幸いです。

5
pronoob

あなたも使うことができます

request.headers['Authorization'].split(' ').last
0
Scott Davidson