2011-07-07 37 views
0

我知道有很多gem可用于在Ruby on Rails中实现完整身份验证。Rails完全从头认证

但在我的情况下,我需要从头开始实施一个。 有很多的教程,说明如何在Rails中实现身份验证,但他们都不涵盖了很多其他重要部件,如:

1]跟踪上次登录和当前登录的时间戳。

2]保持用户的所有成功登录的运行计数。

3]跟踪失败的登录尝试并在一定次数的失败尝试后锁定用户。 (我们不会发送电子邮件来解锁帐户,这是因为用户会打电话,验证他们的身份,然后手机上的人员会通过重新设置一个标志来解锁帐户。请建议是否有另一个更好的选择)

4]记住我的功能。

在此先感谢您的帮助!

+0

如果您不知道在用户模型中添加登录总数和登录时间戳,那么从头开始构建完整身份验证gem可能很困难。 – user482594

+0

,我认为他们不会涵盖这一点,因为它们非常简单,很容易实现。 – user482594

+0

我知道这是微不足道的。但我正在寻找关于“安全”的提示。谢谢! –

回答

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如果fails_count等于一些数字,则添加布尔字段'blocked'并将其设置为true

+0

谢谢弗拉基米尔。这正是我正在寻找的。 –

2

我认为所有自称为“新手”的陷阱都是他们总是希望从头开始构建一切! = P

你说得对,那里有许多验证宝石。我强烈建议在尝试推出自己的产品之前深入挖掘它们,因为有很多粘性斑点来确保您的身份验证系统的功能性和安全性。

我会推荐检查设计(https://github.com/plataformatec/devise),这是我在我的项目上使用的。如果它没有为您提供开箱即用的大部分功能,通过修改注册控制器来添加它几乎是微不足道的。再说一遍,如果它没有开箱即用,一般的做法是 - 为你的用户模型添加last_login,current_login,login_count,failed_attempts。 - 覆盖设计注册控制器,并确保所有这些值都会在需要时更新。

另一方面,Devise提供了通过电子邮件恢复密码的功能,但您可以轻松禁用该功能,以强制用户通过呼入/验证。

您考虑的另一个入门点是新的Rails 3.1(尚未正式发布)。但是包含了很多更新以帮助您构建更好的身份验证系统。看看这个railscast的更多信息:http://railscasts.com/episodes/270-authentication-in-rails-3-1

+0

David,谢谢你的回复。这一定会让我继续。 –