如何让不记名令牌通过rails中的标头传递?
Posted
技术标签:
【中文标题】如何让不记名令牌通过rails中的标头传递?【英文标题】:How to get bearer token passed through header in rails? 【发布时间】:2017-11-03 13:06:56 【问题描述】:在我的 rails 应用程序中,我能够获取令牌 Authorization: Token token='aUthEnTicAtIonTokeN'
传入的请求标头
authenticate_with_http_token do |token, options|
@auth_token = token
end
但是当我将令牌作为Authorization: Bearer token='aUthEnTicAtIonTokeN'
传递时,上述方法将令牌作为零。
如何在 Rails 应用程序中通过标头获取不记名令牌?
【问题讨论】:
【参考方案1】:您可以使用以下方法获取 Bearer 令牌:
def bearer_token
pattern = /^Bearer /
header = request.headers['Authorization']
header.gsub(pattern, '') if header && header.match(pattern)
end
另外,设置标题时应该是:
Authorization: Bearer 'aUthEnTicAtIonTokeN'
【讨论】:
【参考方案2】:您的方法将按原样正常工作,您只需要在请求中使用正确的引号。
使用单引号 '
不起作用,而双引号 "
则起作用。
作为参考,rails 使用 authenticate_with_http_token
方法以下列任何格式处理来自 Authorization:
标头的标记:
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
我敢肯定,这份清单并不详尽,但希望能说明什么是可能的。
【讨论】:
【参考方案3】:你也可以使用
request.headers['Authorization'].split(' ').last
【讨论】:
以上是关于如何让不记名令牌通过rails中的标头传递?的主要内容,如果未能解决你的问题,请参考以下文章
在标头中传递 openid-connect oauth2 不记名令牌
java - 如何从Java Spring Boot中的请求标头获取不记名令牌?
如何传递不记名令牌以使用 URLSessoin 进行 Yelp API 调用
设置 JWT - 在标头中将令牌从服务器传递到客户端,但无法解析客户端中的标头
当我在授权标头中发送有效的不记名令牌时,为啥我的 Spring-Cloud Gateway / OAuth2-Client 没有通过身份验证?