从佣金任务登录设计

时间:2015-10-02 19:45:45

标签: ruby-on-rails devise rake

(编辑:此代码实际上有效,错误出现在原始代码中,其中包含错误的电子邮件地址!)

我已经想出如何从控制台登录Devise,但是当我尝试从rake任务中执行相同操作时,它会在发布登录时给我401未经授权。这是我的佣金任务。 (这些相同的步骤在控制台中工作)。

task :get_home => :environment do
  app = ActionDispatch::Integration::Session.new Rails.application
  app.get '/users/sign_in'
  p csrf_token = app.session[:_csrf_token]

  app.post '/users/sign_in',{:authenticity_token => csrf_token, :user => {:email => "example@example.com", :password => "password"}}
  app.get ''

  p csrf_token = app.session[:_csrf_token]
  app.get '/users'

  File.open("users", "w+") do |f|
    f.write(app.response.body)
  end
end

2 个答案:

答案 0 :(得分:2)

用户错误,我在电子邮件中输入.con而不是.com。 我一定很累,我对参数进行了双重和三重检查,并且从未注意到这一点......直到一个小时之后。 (我在帖子中更改了实际的电子邮件,但在我的代码中却不正确)

答案 1 :(得分:0)

对于较新版本的Rails,仍然需要指定参数。该行将抛出错误ArgumentError: unknown keywords: authenticity_token, user

app.post '/users/sign_in',{:authenticity_token => csrf_token, :user => {:email => "example@example.com", :password => "password"}}

要纠正它,只需添加参数:

app.post '/users/sign_in',{:params => {:authenticity_token => csrf_token, :user => {:email => "example@example.com", :password => "password"}}}