设计:您必须在继续之前确认您的电子邮件地址
我为我的JSON API使用devise
和simple_token_authentication
。一旦我有一个电子邮件和令牌,根据simple_token_authentication,我应该进行身份验证,因此能够访问控制器操作。但是,当我尝试以下的curl命令:设计:您必须在继续之前确认您的电子邮件地址
curl -i -H "Accept: application/json" -H "Content-type: application/json" -H "X-User-Email: [email protected]" -H "X-User-Token: NFHCVtZdjy2zwT_hTezU" -X GET http://localhost:3001/users/11.json
我收到以下错误:
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!
那么这个错误就走开了。设计有一个方法skip_confirmation!
。但是当我从我的移动应用程序创建用户时,devise处理所有事情。我怎么能钩入设计来调用这个方法?
您是否启用: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
你可以问我更详细的确认的模块,我将其配置为我的应用程序。
是的,我知道所有这些,但用户的创建由Devise处理。那么我应该如何钩入Devise来调用skip_confirmation! ? – Donato
为此,您使用rails生成devise controllers生成'devise:controllers [scope]',然后您可以编辑'devise/registrations_controller#create action',以便在保存前确认用户。无论如何,你可以检查你的.rvm文件夹中的设计控制器。它将包含在设计文件夹中的gem文件中 您确定没有:在某处激活的可确认模块?你可以做一个CTRL + SHIFT + F搜索'确认'。晚安 https://github.com/plataformatec/devise#configuring-controllers –
那么你有更新吗? –