我正在使用devise
和simple_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!
。但是当我从我的移动应用程序创建用户时,设计处理所有内容。我怎么能挂钩设计来调用这个方法?
答案 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
在我为我的应用程序配置确认模块时,您可以向我询问更多详细信息。