Dans mon application Rails, je peux obtenir le jeton Authorization: Token token='aUthEnTicAtIonTokeN'
passé dans l'en-tête de la requête avec
authenticate_with_http_token do |token, options|
@auth_token = token
end
mais quand je passe le jeton en tant que Authorization: Bearer token='aUthEnTicAtIonTokeN'
, obtenir le jeton en tant que nil méthode ci-dessus.
comment puis-je obtenir un jeton porteur transmis par en-tête dans l'application Rails?
Vous pouvez obtenir le jeton porteur avec une méthode comme:
def bearer_token
pattern = /^Bearer /
header = request.headers['Authorization']
header.gsub(pattern, '') if header && header.match(pattern)
end
De même, lors de la définition de l'en-tête, il devrait être
Authorization: Bearer 'aUthEnTicAtIonTokeN'
Votre méthode fonctionnera correctement telle quelle, il vous suffit d'utiliser les guillemets corrects dans la demande.
L'utilisation de guillemets simples '
ne fonctionne pas, alors que les guillemets doubles "
fonctionnent.
Pour référence, Rails gère les jetons de l'en-tête Authorization:
dans l'un des formats suivants avec la méthode 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
Je suis sûr que cette liste n’est pas exhaustive, mais elle donne une idée de ce qui est possible.