设计:您必须在继续之前确认您的电子邮件地址

时间:2017-03-10 22:44:07

标签: ruby-on-rails devise

我正在使用devisesimple_token_authentication作为我的JSON API。根据{{​​3}},我收到电子邮件和令牌后,应该进行身份验证,从而能够访问控制器操作。但是,当我尝试以下curl命令时:

  

curl -i -H“接受:application / json”-H“内容类型:   application / json“-H”X-User-Email:donato@myemail.io“-H   “X-User-Token:NFHCVtZdjy2zwT_hTezU”-X GET   simple_token_authentication

我收到以下错误:

HTTP/1.1 401 Unauthorized X-Frame-Options: SAMEORIGIN X-XSS-Protection: 1; mode=block X-Content-Type-Options: nosniff Content-Type: application/json; charset=utf-8 Cache-Control: no-cache Set-Cookie:
_my_app_session=Q0VTT1NNNGx1K2hoK3pSMXBZNFhzaG1BSXd5cGg3WWhkTmVtekEvSkc4Q2FqSkF4anZMYVc1dENWNzJkRUhwcFN2VG8yb0xzeGk4cjFtSm5tWHIxb1E9PS0tZ3V6cXZRL0ZKR3hxSVh1NWxjeENLZz09--145a421cac94ab6be992df6b0f534968ba751231; path=/; HttpOnly X-Request-Id: 8425dd4c-d13e-465b-997e-847288ddbdf0 X-Runtime: 0.027902 Transfer-Encoding: chunked

{"error":"You have to confirm your email address before continuing."}Mac-mini-3:my_app donato$

现在检查我的用户模型:

User.first.attributes.slice("confirmation_token", "confirmed_at", "confirmation_sent_at", "unconfirmed_email")
=> {"confirmation_token"=>"Lvh4XzW5wAeXmHVFEFQk", "confirmed_at"=>nil, "confirmation_sent_at"=>Fri, 10 Mar 2017 22:15:20 UTC +00:00, "unconfirmed_email"=>nil}

似乎已经确认了?

实际上,一旦我这样做了:

user.confirmed_at = Time.now
user.save!

然后那个错误就消失了。 Devise有一个方法skip_confirmation!。但是当我从我的移动应用程序创建用户时,设计处理所有内容。我怎么能挂钩设计来调用这个方法?

1 个答案:

答案 0 :(得分:0)

您是否使用:confirmable启用了Devise?因为它已连接到:confirmable

中的User.rb模块
devise :database_authenticatable, :registerable,
       :recoverable, :rememberable, :trackable, :validatable, :confirmable

.skip_confirmation!在保存用户之前需要调用方法。

user = User.new
user.skip_confirmation!
user.save

这:确认模块在用户模型和用户表中添加了一些字段,如果您正确填写这些字段,您将可以跳过确认。

  ## Confirmable
  # t.string   :confirmation_token
  # t.datetime :confirmed_at
  # t.datetime :confirmation_sent_at
  # t.string   :unconfirmed_email # Only if using reconfirmable

在我为我的应用程序配置确认模块时,您可以向我询问更多详细信息。