我正在使用 Laravel v9。我知道 Laravel 提供了一個默認的密碼重置流程,但我沒有使用它,因為我想要一個自定義的路由名稱。所以我正在寫我自己的流程。
我希望它具有與 Laravel 提供的類似的安全級別。我觀察到 Laravel 正在對他們資料庫中的密碼重置令牌進行哈希處理。據我了解,這是一種安全措施,可防止用戶帳戶所有者以外的任何人在未經所有者同意的情況下重置帳戶密碼(就像散列帳戶密碼一樣)。
當用戶請求重置其帳戶密碼時,將向其注冊的電子郵件地址發送帶有令牌的鏈接。該鏈接將用戶引導至重置其帳戶密碼的頁面。在頁面顯示之前,我的系統會檢查令牌是否存在:
- 檢索所有表記錄
- 回圈遍歷所有記錄并用于
Hash::check()將每個記錄令牌與傳入的請求令牌進行比較 - 如果找到令牌,則顯示頁面。否則,回傳錯誤 404 頁面
我意識到這可能是一個潛在的性能問題:如果有很多用戶在短時間內請求重置密碼,那么第 2 步在時間復雜度和記憶體使用方面都將是一項密集的任務。有什么方法可以比較資料庫查詢而不是應用程式回圈上的令牌值,因為通常資料庫查詢在速度方面更快?
uj5u.com熱心網友回復:
也許我遺漏了一些東西,但簡單的解決方案似乎是在令牌旁邊的 URL 中包含用戶名或 ID。然后檢查頁面將:
- 在資料庫中查找指定用戶
- 檢查它是否存在,并且有一個活動的重置令牌
- 根據 URL 中的令牌檢查資料庫中的令牌
- 如果所有檢查均通過,則允許重置密碼
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/459258.html
上一篇:我在for回圈中列印了很多專案,但是for回圈不夠快
下一篇:這個解決方案的時間復雜度是多少?
