2016-03-15 22 views
3

我將我的數據從舊系統移植到用rails寫的紅寶石系統上。爲了讓舊用戶註冊,我計劃將他們的舊數據傳輸到新系統中,但我不能傳輸他們的舊密碼,所以我打算創建一個隨機密碼,然後創建一個密碼重置鏈接,並向他們發送一封自定義電子郵件邀請他們到我的新系統。如何在設計中獲取密碼重置網址?

設計提供了這一點: user.send_reset_password_instructions

但是這發出了一個「忘記密碼」的電子郵件給用戶。我只想以某種方式獲取忘記的密碼url,以便我可以在自己的郵件中使用該URL並在稍後發送。我嘗試過查找,但他們在任何地方談論「send_reset_password_instructions」函數。任何想法我怎麼能做到這一點?

回答

6

重置密碼url由reset_password_tokenUser模型中形成。

因此保存reset_password_token就足以在稍後恢復reset password url

reset_password_token = 'XYZ' # Example token 
reset_password_url = Rails.application.routes.url_helpers.edit_user_password_path(reset_password_token: reset_password_token) 
+0

所以我可以手動設置使用Devise.friendly_token [0,20]認爲reset_password_token並獲取URL ..這應該工作的權利? –

+1

還有一個名爲set_reset_password_token的方法,但受保護。你可以做一些像user.send(:set_reset_password_token)來設置一個新的令牌。 – Jose