Reputation: 323
In my rails application I'm able to get the Token Authorization: Token token='aUthEnTicAtIonTokeN'
passed in header of request with
authenticate_with_http_token do |token, options|
@auth_token = token
end
but when I pass token as Authorization: Bearer token='aUthEnTicAtIonTokeN'
getting token as nil above method.
how can i get bearer token passed through header in rails application?
Upvotes: 20
Views: 19726
Reputation: 1065
You could also use
request.headers['Authorization'].split(' ').last
Upvotes: 7
Reputation: 1701
You could get the Bearer token with a method like:
def bearer_token
pattern = /^Bearer /
header = request.headers['Authorization']
header.gsub(pattern, '') if header && header.match(pattern)
end
Also, when setting the header it should be:
Authorization: Bearer 'aUthEnTicAtIonTokeN'
Upvotes: 41
Reputation: 841
Your method will work correctly as it is, you just need to use the correct quotes in the request.
Using single quotes '
doesn't work, where as double quotes "
does.
For reference, rails handles tokens from the Authorization:
header in any of the following formats with the authenticate_with_http_token
method:
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
I'm sure this list is not exhaustive, but hopefully gives an idea of what is possible.
Upvotes: 9