如何使用cURL在使用designe的Rails应用程序上进行身份验证?

如何使用cURL在使用designe的Rails应用程序上进行身份验证?,curl,ruby-on-rails-3,devise,Curl,Ruby On Rails 3,Devise,我想使用cURL测试我的railsweb服务,但到目前为止,我只能在禁用之后才能使用cURL测试。但我想先登录,然后创建、销毁等 我看到,使用cURL,您可以验证会话信息并将其保存在cookie中,您可以将其用于以下请求,但我无法使用designe:在我的场景中,用户使用电子邮件/密码组合登录,因此我尝试: curl \ -X POST \ -d 'email=email@example.com&password=password' \ -c cookie \ http://lo

我想使用cURL测试我的railsweb服务,但到目前为止,我只能在禁用
之后才能使用cURL测试。但我想先登录,然后创建、销毁等

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

curl \ -X POST \ -d 'email=email@example.com&password=password' \ -c cookie \ http://localhost:3000/users/sign_in > out 卷曲\ -X柱\ -电子邮件=email@example.com&密码=密码'\ -饼干\ http://localhost:3000/users/sign_in >出去 我得到:
ActionController::InvalidAuthenticityToken在designe/sessioncontroller#create

谁能给我一个主意/一个例子吗


谢谢

您是否尝试过类似的方法(未经测试):


这是因为Rails在默认情况下会向表单添加真实性令牌,以防止恶意伪造提交的参数。由于您没有在请求中提供此令牌,rails不会接受它。 您可以使用

skip_before_filter :verify_authenticity_token
在进行授权的控制器中,甚至最好将其限制为授权操作:only.

获得以下信息:

如果您有web服务,请登录 应该使用HTTP身份验证来完成。如果 不是,您可以选择禁用 会话上的真实性令牌 形式,但不推荐

这项工作:

验证:

curl -H 'Content-Type: application/json' \ -H 'Accept: application/json' \ -X POST http://localhost:3000/users/sign_in \ -d "{'user' : { 'email' : 'test@example.com', 'password' : 'password'}}" \ -c cookie curl -H 'Content-Type: application/json' \ -H 'Accept: application/json' \ -X GET http://localhost:3000/pages/1.xml \ -b cookie curl-H'内容类型:application/json'\ -H'Accept:application/json'\ -X柱http://localhost:3000/users/sign_in \ -d“{'user':{'email':'test@example.com“,”密码“:”密码“}”\ -饼干 显示:

curl -H 'Content-Type: application/json' \ -H 'Accept: application/json' \ -X POST http://localhost:3000/users/sign_in \ -d "{'user' : { 'email' : 'test@example.com', 'password' : 'password'}}" \ -c cookie curl -H 'Content-Type: application/json' \ -H 'Accept: application/json' \ -X GET http://localhost:3000/pages/1.xml \ -b cookie curl-H'内容类型:application/json'\ -H'Accept:application/json'\ -X得到http://localhost:3000/pages/1.xml \
-b Cookies这样结束参数也不满足给定的场景。这适用于GET请求,但是对于POST请求它似乎不起作用。这可能是因为在Rails 3()中,对于非GET请求,您需要CSRF令牌身份验证步骤在我切换单引号和双引号后对我起作用,但无法访问任何内容。我使用的是基于memcached的会话,当我使用上述curl时,Rails似乎没有在cookie中发回会话id。我可以告诉你,如果有饼干的话,它会起作用,但那是不会发生的。有人有这方面的经验吗?