私のRailsアプリケーションでは、トークンAuthorization: Token token='aUthEnTicAtIonTokeN'
をリクエストのヘッダーに渡して取得できます
authenticate_with_http_token do |token, options|
@auth_token = token
end
しかし、トークンをAuthorization: Bearer token='aUthEnTicAtIonTokeN'
として渡した場合、上記のメソッドではnilとしてトークンを取得します。
Railsアプリケーションのヘッダーから渡されたベアラートークンを取得するにはどうすればよいですか?
次のような方法でBearerトークンを取得できます。
def bearer_token
pattern = /^Bearer /
header = request.headers['Authorization']
header.gsub(pattern, '') if header && header.match(pattern)
end
また、ヘッダーを設定するときは、次のようにする必要があります。
Authorization: Bearer 'aUthEnTicAtIonTokeN'
メソッドはそのまま正しく機能します。リクエストで正しい引用符を使用する必要があります。
単一引用符'
は、二重引用符"
と同じように機能しません。
参考までに、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
このリストは網羅的ではないと思いますが、うまくいけば何ができるのかを理解できれば幸いです。
あなたも使うことができます
request.headers['Authorization'].split(' ').last