【问题标题】:How do you use cURL to authenticate on a Rails application that uses Devise?您如何使用 cURL 在使用 Devise 的 Rails 应用程序上进行身份验证?
【发布时间】:2011-01-12 19:19:09
【问题描述】:

我想使用 cURL 测试我的 Rails Web 服务,但目前我只能在停用 before_filter :authenticate_user! 时进行。但我想先登录,然后创建、销毁等。

我看到使用 cURL,您可以验证会话信息并将其保存在 cookie 中,用于您的以下请求,但我无法使其与 Devise 一起使用:在我的场景中,用户使用电子邮件登录/密码组合,所以我在尝试:

卷曲\ -X 发布\ -d 'email=email@example.com&password=password' \ -c 饼干\ http://localhost:3000/users/sign_in > out

我得到:ActionController::InvalidAuthenticityToken in Devise/sessionsController#create

有人可以给我一个想法/一个例子吗?

谢谢!

【问题讨论】:

    标签: curl ruby-on-rails-3 devise


    【解决方案1】:

    这行得通:

    验证:

    curl -H 'Content-Type: application/json' \
      -H '接受:应用程序/json' \
      -X POST http://localhost:3000/users/sign_in \
      -d "{'用户' : { '电子邮件' : 'test@example.com', '密码' : '密码'}}" \
      -c cookie

    显示:

    curl -H 'Content-Type: application/json' \
      -H '接受:应用程序/json' \
      -X 获取 http://localhost:3000/pages/1.xml \
      -b cookie

    【讨论】:

    • 这适用于 GET 请求,但是,对于 POST 请求,它似乎不起作用。
    • 这可能是因为您需要 CSRF 令牌来处理 Rails 3 中的非 GET 请求 (weblog.rubyonrails.org/2011/2/8/…)
    • 在我切换单引号和双引号后,身份验证步骤对我有用,但无法访问任何内容。
    • 我正在使用基于 memcached 的会话,当我使用上述 curl 时,Rails 似乎没有在 cookie 中发回会话 ID。我可以说它会工作如果有一个cookie,但那没有发生。有人有这方面的经验吗?
    【解决方案2】:

    这是因为 Rails 默认为表单添加了一个真实性令牌,以防止恶意伪造提交的参数。由于您没有在请求中提供此令牌,因此 rails 不接受它。 你可以绕过这个

    skip_before_filter :verify_authenticity_token
    

    在您的控制器中进行授权,甚至最好将其限制为使用 :only 的授权操作。

    【讨论】:

      【解决方案3】:

      您是否尝试过这样的事情(未测试):

      curl --user name:password http://www.domain.com
      curl --user name:password -f 'key=value' http://www.domain.com
      

      【讨论】:

      • 发送这样的参数也不满足给定的场景。
      【解决方案4】:

      得到以下answer from José Valim:

      如果您有网络服务,请登录 应该使用 HTTP Auth 来完成。如果 不,您的选择是禁用 会话上的真实性令牌 形式,虽然不推荐。

      【讨论】:

        猜你喜欢
        • 2017-01-16
        • 2016-06-18
        • 2014-01-04
        • 1970-01-01
        • 2014-02-25
        • 1970-01-01
        • 2023-04-08
        • 2013-06-01
        • 2014-02-10
        相关资源
        最近更新 更多