2013-02-12 43 views
9

我一直在我的應用程序中使用Devise的寶石。我能夠 配置devise sessions_controller來響應來自web的請求和來自移動API調用的 。忘記密碼設計寶石API

但是現在我想知道如何使用Devise gem 的Forgot Password選項進行Mobile API調用。我可以使用API​​登錄,如下所示:

curl -X POST 'http://localhost:3002/users/sign_in.json' -d 'user[email][email protected]&user[password]=123456' 

我可以使用忘記密碼嗎?

+0

嗨@balanv,我正在尋找使用設計的web和api認證。我能知道你是如何制定出來的嗎?提前致謝。 – 2013-05-21 11:36:01

+0

@SagarBommidi:請將此作爲單獨問題發佈,我可以爲您提供解答。 – balanv 2014-04-01 06:51:52

+0

是不是涵蓋在設計寶石中的可恢復模塊? – BKSpurgeon 2018-02-04 22:30:36

回答

17

得到了答案。

1)創建其臨危email作爲輸入

2自定義操作)添加以下代碼

@user = User.find_by_email("[email protected]") 
if @user.present? 
@user.send_reset_password_instructions 
render :text => "updated" 
else 
    render :text => "no such email" 
end 
+1

優秀!!!!!!! – 2013-10-16 16:12:06

+3

無論用戶是否存在,您最好不要渲染相同的消息。就像這樣,這個動作可以用來捕獲有效的用戶帳戶。 – 2014-05-28 17:07:10

+1

克里斯好! – balanv 2014-05-29 09:19:53

1

我這樣做:

config/routes.rb

namespace :api do 
    namespace :v1 do 
    resources :reset_passwords, only: [:index, :create] 
    end 
end 

和在app/controllers/api/v1/reset_passwords_controller.rb

class Api::V1::ResetPasswordsController < Api::V1::BaseController 
    def index 
    user = User.find_by_email(user_params) 
    if user.present? 
    user.send_reset_password_instructions 
    render(
      json: "{ \"result\": \"Email already exists\"}", 
      status: 201 
     ) 
    else 
     render(
      json: "{ \"error\": \"Not found\"}", 
      status: 404 
     ) 
    end 
    end 

    private 

    def user_params 
    params.require(:email) 
    end 

end