Ruby on Rails中如何从Webhook获取Bearer Token?
最近在处理Webhook接收数据的需求时,我需要从请求头里提取Authorization Bearer Token,先后试了几种方法都踩了坑,最后终于找到正确的方式,分享给大家:
尝试过的错误方法及结果
方法1:解析响应体获取csrf-token
当时误以为Token在响应体的JSON数据里,写了这段代码:data = JSON.parse(response.body) puts "TOKEN " + data['csrf-token']['content']结果完全拿不到想要的Bearer Token,方向从一开始就错了。
方法2:检查headers中的Authorization
这次意识到要从请求头里找,但用错了对象:if headers['Authorization'].present? puts " HEADER " + headers['Authorization'].split(' ').last else puts "ERROR" end输出了
ERROR,说明headers并不是当前请求的头信息对象。方法3:直接用响应体取csrf-token
没解析JSON就直接按哈希取值,结果返回nil:data = response.body puts "TOKEN " + data['csrf-token']['content']
最终解决方案
正确的做法是通过request对象来获取请求头:
# 获取完整的Authorization头(包含Bearer前缀) bearer_token = request.headers["Authorization"] # 如果只需要Token部分,可以拆分一下 bearer_token_value = request.headers["Authorization"]&.split(' ').last if request.headers["Authorization"].present?
问题的核心就是之前没有使用正确的request对象来访问请求头,改用request.headers就能正确拿到Authorization字段了。
内容的提问来源于stack exchange,提问作者Dam76
相关产品推荐
相关产品推荐

