我知道有很多宝石可用于在Ruby on Rails中实现完全身份验证。
但就我而言,我需要从头开始实施。 有很多教程展示了如何在Rails中实现身份验证,但它们都没有涵盖很多其他重要部分,如:
1]跟踪上次登录和当前登录时间戳。
2]保持用户所有成功登录的运行计数。
3]跟踪失败的登录尝试并在一定次数的失败尝试后锁定用户。 (我们不会发送电子邮件来解锁帐户。这是因为用户会打电话,验证他们的身份,然后手机上的人会通过重置标志解锁帐户。请建议是否还有其他更好的选择。)
4]记住我的功能。
提前感谢您的帮助!
答案 0 :(得分:2)
我认为所有自称为“新手”的陷阱是他们总是想从头开始构建一切! = P
你是对的,那里有许多认证宝石。我强烈建议在尝试自己动手之前深入挖掘它们,因为有很多粘性点可以确保您的身份验证系统功能正常且安全。
我建议查看Devise(https://github.com/plataformatec/devise),这是我在项目中使用的那个。如果它没有为您提供开箱即用的大部分功能,那么通过修改注册控制器来添加它几乎是微不足道的。同样,如果它没有开箱即用,一般的方法将是 - 将last_login,current_login,login_count,failed_attempts添加到您的用户模型。 - 覆盖设计注册控制器,并确保在需要时更新所有这些值。
Anther指出,Devise确实提供了通过电子邮件恢复密码的功能,但您可以轻松禁用它以强制用户通过电话进入/验证。
您要考虑的另一个切入点是新的Rails 3.1(尚未正式发布)。但是包含了大量更新以帮助您构建更好的身份验证系统。查看此railscast了解更多信息:http://railscasts.com/episodes/270-authentication-in-rails-3-1
答案 1 :(得分:1)
1]向您的表中添加两个时间戳字段以跟踪这些参数:last_login_time
和current_login_time
。用户登录时last_login_time = current_login_time
和current_login_time = Time.now
2]将logins_count
字段添加到您的表中并在每次登录时增加
3]
3.1添加字段fails_count
并在每次登录失败时增加它,并在成功登录时重置
3.2添加布尔字段'blocked',如果fails_count
等于某个数字
答案 2 :(得分:1)
您可能想要检查我从头开始构建身份验证的example Rails application。