如何在 rails 中通过 header 获取不记名令牌?
How to get bearer token passed through header in rails?
在我的 rails 应用程序中,我能够通过
获取请求 header 中传递的令牌 Authorization: Token token='aUthEnTicAtIonTokeN'
authenticate_with_http_token do |token, options|
@auth_token = token
end
但是当我将令牌作为 Authorization: Bearer token='aUthEnTicAtIonTokeN'
获取令牌作为 nil 以上方法时。
如何在 rails 应用程序中通过 header 获取不记名令牌?
您可以通过以下方法获取 Bearer 令牌:
def bearer_token
pattern = /^Bearer /
header = request.headers['Authorization']
header.gsub(pattern, '') if header && header.match(pattern)
end
此外,设置 header 时应为:
Authorization: Bearer 'aUthEnTicAtIonTokeN'
您的方法将按原样正确工作,您只需要在请求中使用正确的引号。
使用单引号 '
无效,而双引号 "
有效。
作为参考,rails 使用 authenticate_with_http_token
方法以下列任何格式处理来自 Authorization:
header 的标记:
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
在我的 rails 应用程序中,我能够通过
获取请求 header 中传递的令牌Authorization: Token token='aUthEnTicAtIonTokeN'
authenticate_with_http_token do |token, options|
@auth_token = token
end
但是当我将令牌作为 Authorization: Bearer token='aUthEnTicAtIonTokeN'
获取令牌作为 nil 以上方法时。
如何在 rails 应用程序中通过 header 获取不记名令牌?
您可以通过以下方法获取 Bearer 令牌:
def bearer_token
pattern = /^Bearer /
header = request.headers['Authorization']
header.gsub(pattern, '') if header && header.match(pattern)
end
此外,设置 header 时应为:
Authorization: Bearer 'aUthEnTicAtIonTokeN'
您的方法将按原样正确工作,您只需要在请求中使用正确的引号。
使用单引号 '
无效,而双引号 "
有效。
作为参考,rails 使用 authenticate_with_http_token
方法以下列任何格式处理来自 Authorization:
header 的标记:
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