的流程是:將電子郵件發送到用戶的密碼重置
- 用戶輸入電子郵件地址
- 後提交,電子郵件被髮送到用戶
- 電子郵件中將包括一個鏈接,將採取用戶重置密碼頁面。
現在,我該如何根據電子郵件地址獲取用戶ID並對其進行加密?那麼鏈接應該是什麼?就像我想要的是獲取用戶ID,然後以某種方式對其進行加密,以便鏈接不包含實際ID,並且該鏈接將使用戶訪問將有文本框重置密碼的頁面。我只是困惑如何去做。
也是這種安全的方式?重置這樣的密碼?
的流程是:將電子郵件發送到用戶的密碼重置
現在,我該如何根據電子郵件地址獲取用戶ID並對其進行加密?那麼鏈接應該是什麼?就像我想要的是獲取用戶ID,然後以某種方式對其進行加密,以便鏈接不包含實際ID,並且該鏈接將使用戶訪問將有文本框重置密碼的頁面。我只是困惑如何去做。
也是這種安全的方式?重置這樣的密碼?
我通常在數據庫中創建一個新表:
PasswordresetRequest具有以下字段:
流程如下:在網站
這很容易實現,對於大多數網站來說足夠安全。
有很多方法可以做到這一點。如果您的主要擔心是安全性,一種方法可能是發送一個鏈接,其中包含一個guid參數,您可以在您的最終(在數據庫表,文件或任何適合您的用戶)中創建和存儲該參數以及與其關聯的用戶標識。當密碼重置請求進入時,您檢查guid並查看您的db/file/whatever中是否有一個匹配值,並繼續進行密碼重置。不要忘記從存儲中刪除GUID以防止多次使用相同的鏈接。
在這個問題上有一個railscast:http://railscasts.com/episodes/274-remember-me-reset-password?view=asciicast
寫得很好,謝謝 – Kjensen 2011-07-22 16:12:02