使用rest-client post请求创建新人

时间:2013-09-08 22:14:10

标签: ruby-on-rails ruby ruby-on-rails-3 rest restful-authentication

我创建了一个简单的演示应用程序,进行了一些实验:

rails new rumba
rails g scaffold People name:string

然后我写了一个小程序来发帖请求:

require 'rest_client'
response = RestClient.post 'localhost:3000/people', :people => {:name => 'Joseph'}
puts response

到目前为止它起作用并产生了新的人。 我面临的唯一问题是,我认为,这不会对heroku有效,因为我没有提供authentikation令牌:

Started POST "/people" for 127.0.0.1 at 2013-09-09 00:08:10 +0200
Processing by PeopleController#create as XML
Parameters: {"person"=>{"name"=>"Joseph"}}

WARNING: Can't verify CSRF token authenticity

←[1m←[35m (0.0ms)←[0m  begin transaction
←[1m←[36mSQL (2.0ms)←[0m  ←[1mINSERT INTO "people" ("created_at", "name", "upd
ated_at") VALUES (?, ?, ?)←[0m  [["created_at", Sun, 08 Sep 2013 22:08:10 UTC +0
0:00], ["name", "Joseph"], ["updated_at", Sun, 08 Sep 2013 22:08:10 UTC +00:00]]

所以我的问题是我如何在RestClient.post请求中提供身份验证令牌?

1 个答案:

答案 0 :(得分:1)

一种解决方案是创建自己的真实性令牌。你需要做几件事。

    在Rails中
  1. Turn off csrf token

  2. 创建一个动作,在Heroku应用程序中为您提供真实性令牌。

  3. 请求上述操作,然后在您的应用中存储提供给您的真实性令牌。

  4. 当您的Heroku应用程序发送请求时,请创建一个过滤器,在您的操作保存人员之前验证真实性令牌。

  5. 由于您正在玩游戏,您始终可以将令牌设置为DateTime,然后检查令牌的验证时间。但是,如果您曾想在生产站点上执行此操作,则必须更多地考虑如何创建真实性令牌。