2014-03-05 95 views
3

我正在使用Devise進行Rails 4應用程序驗證,並且遇到密碼重置問題。在本地,一切工作正常,當我粘貼重置鏈接(即本地主機:3000 /用戶/密碼/編輯?reset_password_token = e_f3ZpqrE_rTBZmKJk_E)它按預期工作。設計密碼重置問題Rails 4

在Heroku上,Devise似乎甚至沒有注意到:reset_password_token參數,並自動通過通知重定向到/ users/signin「如果你沒有來自密碼重置電子郵件,則無法訪問此頁面。從密碼重置電子郵件,請確保您使用了提供的完整URL。「

這裏是正在生成的鏈接的例子:http://mysite.io/users/password/edit?reset_password_token=anzYNreZEcz4-dtZy5Uf

我甚至壓倒在我自己的控制器assert_reset_token_passed方法來檢查PARAMS [:reset_password_token]竟是空白,由於某種原因是,鐵軌不會從網址中拉出來。這裏是我的修改方法:

def assert_reset_token_passed 
    logger.info params[:reset_password_token] #This is blank somehow 
    if params[:reset_password_token].blank? 
     set_flash_message(:alert, :no_token) 
     redirect_to new_session_path(resource_name) #This is where the redirect happens 
    end 
end 

任何幫助將不勝感激。

回答

5

我有完全相同的問題。對我來說,修正是更新production.rb中的config.action_mailer.default_url_options以包含完整的主機(在我的例子中是「www.mydomain.com」和「mydomain.com」)。

爲了澄清,它使用的是

config.action_mailer.default_url_options = { :host => 'mydomain.com' } 

,現在是

config.action_mailer.default_url_options = { :host => 'www.mydomain.com' } 
+0

這不完全是我的情況,但它讓我在正確的軌道上。在我的情況下,生成的網址是http,但我的應用將所有流量重定向到https。重定向丟失查詢字符串。 – Brandon

+0

布蘭登,到底什麼是你的確切解決方案,是它增加:協議=>'https' - 我希望這會爲我解決它,但它並沒有 – christian

+0

謝謝 - 這解決了這個問題我! – justinraczak