2017-03-10 552 views
0

我爲我的JSON API使用devisesimple_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處理所有事情。我怎麼能鉤入設計來調用這個方法?

+0

那麼你有更新嗎? –

回答

0

您是否啓用:confirmableDevise?因爲這是連接到: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 

你可以問我更詳細的確認的模塊,我將其配置爲我的應用程序。

+0

是的,我知道所有這些,但用戶的創建由Devise處理。那麼我應該如何鉤入Devise來調用skip_confirmation! ? – Donato

+0

爲此,您使用rails生成devise controllers生成'devise:controllers [scope]',然後您可以編輯'devise/registrations_controller#create action',以便在保存前確認用戶。無論如何,你可以檢查你的.rvm文件夾中的設計控制器。它將包含在設計文件夾中的gem文件中 您確定沒有:在某處激活的可確認模塊?你可以做一個CTRL + SHIFT + F搜索'確認'。晚安 https://github.com/plataformatec/devise#configuring-controllers –

相關問題