为什么要么删除cookie还是从未保存过?

时间:2014-05-11 05:31:02

标签: ruby-on-rails cookies curl

我在基本控制器中有一个API,我的所有api控制器都扩展了我有以下代码片段:

  def restrict_api_access
    authenticate_or_request_with_http_token do |token, options|
      @api_key = ApiKey.find_by(api_key: token)
      cookies.signed.permanent[:writer_auth] = @api_key.api_key
    end unless current_user
  end

  def current_user
      api_key = ApiKey.find_by(api_key: cookies.signed[:writer_auth])
      if api_key
        @current_user ||= User.find_by(id: api_key.xaaron_users_id)
      end
  end

非常直接和基本,如果我这样做:

curl http://site.local.com:4000/api/v1/users -H 'Authorization: Token "0169d577d2845f3ea5e0fbf8ca2f444c"'

我收到了一份用户列表。活泉。

现在我在思考,根据我上面的逻辑,我现在应该根据api密钥为这个用户创建一个cookie,现在我应该能够做到:

curl http://site.local.com:4000/api/v1/users

但事实并非如此,而在第一轮通过cookie创建时,生命是盛大的,current_user存在一个用户对象,在第二轮通过没有api密钥 - cookie是零,我被发送401未经授权。

不应该发生这种情况,不应删除cookie。我做错了什么?

1 个答案:

答案 0 :(得分:1)

默认情况下,Curl不会保留Cookie。

这样做的方法是将cookie存储在cookie文件中,然后在每次请求时使用它。

请参阅http://ask.metafilter.com/18923/How-do-you-handle-authentication-via-cookie-with-CURL