參考鏈接
Module: Devise::Models::Lockable
How To: Add :lockable to Users
基于 How To: Add :lockable to Users 設(shè)定好 devise.rb 文件及在 user 中引入好 devise,別的幾乎都不用做就可以實現(xiàn)登錄失敗次數(shù)限制并鎖定賬戶的功能状知,devise 都幫我們做好了青瀑。
但是 devise 的 Lockable 只是針對登錄失敗次數(shù)超過限制鎖定賬戶,如果針對重置密碼也要做一樣的操作乖订,目前想到 2 種解決方案:
- 模仿 devise 的 failed_attempts 新增一個 pwd_failed_attempts
- 需要自己主動維護 pwd_failed_attempts
- 需要實現(xiàn) pwd_failed_attempts 次數(shù)到達(dá)限制,鎖定用戶
- 需要在登錄和重置密碼兩側(cè)都增加判斷具练,到期解鎖后重置 pwd_failed_attempts
- 缺點:需要自定義和維護的部分較多乍构,優(yōu)點:做到獨立限制,不和登錄次數(shù)產(chǎn)生依賴
- 共用 failed_attempts扛点,利用 devise 已經(jīng)實現(xiàn)的 method
- 不需要單獨維護 pwd_failed_attempts
- 需要手動在重置密碼失敗后累加 failed_attempts 及達(dá)到限制鎖定哥遮,不過可以參考 devise 源碼岂丘,較容易實現(xiàn)
- 只需要在重置密碼的部分調(diào)用 devise 的 valid_for_authentication? 就可以實現(xiàn)次數(shù)累加及到期解鎖功能
- 缺點:不可獨立限制重置次數(shù)限制,和登錄次數(shù)限制產(chǎn)生依賴昔善,優(yōu)點:可復(fù)用 devise 登錄失敗鎖定機制
最后考量下元潘,選擇了方案 2畔乙。比較方便的實現(xiàn)了重置密碼失敗次數(shù)限制君仆。