2013-01-22 80 views
3

我在我的控制器中添加一個函數,唯一的目標是通過API請求觸發忘記的密碼過程。設計send_reset_password_instructions不起作用

這裏是reset_password方法 -

def reset_password 
    @user = User.find_by_email(params[:email]) 
    @user.send_reset_password_instructions 
    respond_to do |format| 
     format.xml { render :xml => user_api_ressource(@user, :xml)} 
     format.json { render :json => user_api_ressource(@user, :json)} 
    end 
    end 

我收到與重置密碼鏈接郵件,它會打開在那裏我可以設置一個新密碼,但是當我提交表單它說,該頁面令牌無效。

我正在使用sendgrid發送電子郵件。我認爲這不是一個令牌截斷問題。

我正在用最新版本的devise在Heroku雪松上運行rails應用程序。

有什麼想法?

回答

1

我剛剛面臨同樣的問題。就我而言,這是因爲userunscoped。看起來似乎沒有在這種情況下找到用戶。

這是在/lib/devise/models/authenticatable.rb的設計來源,在線路113

 recoverable = find_or_initialize_with_error_by(:reset_password_token, reset_password_token) 

不搜索unscoped

我會叉回購,讓我知道你是否也有興趣。