有没有办法让Devise的标题响应身体?

时间:2017-02-07 13:55:23

标签: ruby-on-rails ruby http devise

在我的Rails-api应用程序中,我使用Devise gem,在进行身份验证时会返回Headers中的所有关键信息(Access-Token,UID,Client等),如下所示:

Access-Token →DIbgreortZbCYKqzC8HdNg
Client →Y6J5oTIqS7Gc_-h9xynBQ
Uid →email2@example.com

我希望那些人在响应中。有没有办法实现这个目标?

1 个答案:

答案 0 :(得分:0)

Rails为您提供了一个请求对象,因此您可以从控制器的标题中获取所需的任何内容。

def some_action
     @mime_type = request.headers["Content-Type"] # => "text/plain"
     @token = request.headers["key-for-your-token-here"]
end

然后您可以将其传递给您的视图,也可以通过request.body将其插入响应正文,就像将任何键/值对插入哈希一样。

ActionDispatch :: Request的文档在这里找到: http://api.rubyonrails.org/classes/ActionDispatch/Request.html#method-i-headers

更新:

创建一个自定义方法,并查看运行标头哈希所需的时间。如果时间长,您可以使用它来找到您正在寻找的确切嵌套并更改它。

def find_token(parent, request.headers)
  request.headers.each {|key, value|
    if value.is_a?(Hash) 
       find_token(key, value)
    elsif key == 'THE TOKEN KEY HERE'
       return value
    else
      next
    end 
  }
end