如何通过rails中的标头传递持有者令牌?

问题描述 投票:7回答:3

在我的rails应用程序中,我能够获得在请求标头中传递的令牌Authorization: Token token='aUthEnTicAtIonTokeN'

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

但当我传递令牌作为Authorization: Bearer token='aUthEnTicAtIonTokeN'获取令牌为nil方法时。

如何在rails应用程序中通过标头传递不记名令牌?

ruby-on-rails authentication bearer-token
3个回答
16
投票

您可以通过以下方法获取Bearer令牌:

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

此外,设置标题时应该是:

Authorization: Bearer 'aUthEnTicAtIonTokeN'

4
投票

您的方法将正常工作,您只需要在请求中使用正确的引号。

使用单引号'不起作用,其中双引号"

作为参考,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

我确定这份清单并非详尽无遗,但希望能够了解可行的方法。


0
投票

你也可以用

request.headers['Authorization'].split(' ').last
© www.soinside.com 2019 - 2024. All rights reserved.