簡體   English   中英

從頭開始的 Rails 完整身份驗證

[英]Rails Full Authentication from scratch

我知道有很多 gem 可用於在 Ruby on Rails 中實現完全身份驗證。

但就我而言,我需要從頭開始實施一個。 有很多教程展示了如何在 Rails 中實現身份驗證,但沒有一個涵蓋很多其他重要部分,例如:

1] 跟蹤上次登錄和當前登錄時間戳。

2]保持用戶所有成功登錄的運行計數。

3]跟蹤失敗的登錄嘗試並在一定次數的失敗嘗試后鎖定用戶。 (我們不會發送電子郵件來解鎖帳戶。這是因為用戶會打電話,驗證他們的身份,然后手機上的人會通過重置標志來解鎖帳戶。請建議是否有其他更好的選擇.)

4]記住我的功能。

提前感謝您的幫助!

我認為所有自稱“新手”的陷阱是他們總是想從頭開始構建一切! =P

你是對的,那里有很多認證寶石。 我強烈建議您在嘗試推出自己的產品之前對它們進行更深入的研究,因為有很多難點可以確保您的身份驗證系統正常運行且安全。

我建議查看 Devise (https://github.com/plataformatec/devise),這是我在項目中使用的。 如果它沒有為您提供開箱即用的大部分功能,那么通過修改注冊 controller 添加它幾乎是微不足道的。 同樣,如果它不是開箱即用的,一般方法是 - 將 last_login、current_login、login_count、failed_attempts 添加到您的用戶 model。 - 覆蓋 devise 注冊 controller 並確保在需要時更新所有這些值。

花葯筆記,Devise 確實提供了通過 email 恢復密碼的功能,但您可以輕松禁用它以強制您的用戶通過呼入/驗證。

您需要考慮的另一個切入點是新的 Rails 3.1(尚未正式發布)。 但其中包含許多更新以幫助您構建更好的身份驗證系統。 查看此 railscast 了解更多信息: http://railscasts.com/episodes/270-authentication-in-rails-3-1

1] 向您的表添加兩個時間戳字段以跟蹤這些參數: last_login_timecurrent_login_time 當用戶登錄時last_login_time = current_login_timecurrent_login_time = Time.now

2] 將logins_count字段添加到您的表中,並在每次登錄時增加它

3] 3.1 添加字段fails_count並在每次登錄不成功時增加它並在成功登錄時重置 3.2 添加boolean 字段'blocked' 並將其設置為true 如果fails_count等於某個數字

您可能想查看我的示例 Rails 應用程序,該應用程序具有從頭構建的身份驗證。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM