如何使用cURL在使用designe的Rails应用程序上进行身份验证?
我想使用cURL测试我的railsweb服务,但到目前为止,我只能在禁用如何使用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测试代码>。但我想先登录,然后创建、销毁等
我看到,使用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。我可以告诉你,如果有饼干的话,它会起作用,但那是不会发生的。有人有这方面的经验吗?