Ruby on Rails认证的最佳解决方案
我正在寻找可以在RoR应用程序中使用的预构建解决方案。理想情况下,我正在寻找与ASP.NET Forms身份验证类似的东西,该身份验证提供电子邮件验证,注册控件并允许用户重置其密码。好的,可以轻松地让我拉出当前登录到该应用程序的用户。
我已经开始研究已经写过的文章,但是我发现它确实令人困惑。我看过LoginGenerator,RestfulAuthentication,SaltedLoginGenerator,但似乎没有一个地方提供出色的教程或者提供它们的比较。如果有一个我尚未发现的站点,或者如果有大多数人使用的事实上的标准,我将不胜感激。
解决方案
回答
我真的会推荐Restful身份验证。我认为这实际上是事实上的标准。
回答
如果我们还需要OpenID支持以及密码支持,那么还可以使用RestfulOpenIDAuthentication。
回答
请注意,LoginGenerator和SaltedLoginGenerator已被Restful Authentication取代,并且在较新的Rails版本中不受支持-不要浪费任何时间,尽管它们当时很棒。
回答
我还想指出一个很好的教程/讨论,以扩展Restful Authentication的核心功能,以防我们需要更强大的功能。
回答
restful_authentication是一个功能强大的工具,它非常灵活,可以立即提供我们要查找的大多数内容。但是,请注意以下几点:
- 不要以"控制"来思考。在Rails中,模型,视图和控制器比" Webforms样式"的ASP.NET更独立。独立地计算出每个层的需求,编写匹配的测试/规格,并确保每个层都在按期望进行。
- 即使我们使用的是插件,也无法替代读取(至少一些)生成的代码。如果我们对幕后情况有一个全面的了解,我们会发现调试和自定义要容易得多。
回答
插件restful_authentication和其他扩展它的插件可以完美满足需求。在github.com上快速搜索将发现许多教程,示例和扩展。只是去这里:
http://github.com/search?q=restful_authentication
有几个使用restful_authentication的项目只是为了提供仅包含身份验证部分的准Rails应用程序的示例。
- http://github.com/fudgestudios/bort-一个基本的Rails应用程序,具有:RESTful身份验证
- http://github.com/mrflip/restful_authentication_example-另一个有关如何使用restful_authentication的示例的项目
- http://github.com/activefx/restful_authentication_tutorial-与上面相同,捆绑了一些其他插件。
- http://railscasts.com/episodes/67-restful-authentication-很棒的截屏视频,介绍了restful_authentication
这些信息应该足以让我们开始寻找头和尾...祝我们好运。
回答
AuthLogic似乎是新手,似乎是restful_authentication的下一个发展,更易于使用等
http://github.com/binarylogic/authlogic/tree/master
编辑:既然Rails 3已经发布,Devise似乎是一个新的,新生的孩子
https://github.com/plataformatec/devise
或者我现在已经使用内置在Rails中的" has_secure_password"滚动了自己的身份验证http://railscasts.com/episodes/250-authentication-from-scratch-revised
旁注:Ruby Toolbox是一个不错的网站,可用于查找各种类别中的当前最佳解决方案(基于GitHub观察者的数量):
http://ruby-toolbox.com/categories/rails_authentication.html
回答
AuthLogic似乎就是我们想要的。它是非常可配置的,尽管它不会为我们生成代码,但它非常易于使用。对于电子邮件验证和密码恢复,我们可能要使用:perishable_token
列。 AuthLogic会处理它,我们只需要在使用它时将其重置。有关如何设置基本应用程序的信息,我们可以查看AuthLogic上的Ryan Bates的Railscast,以及"官方"示例应用程序。 AuthLogic的创建者本·约翰逊(Ben Johnson)也写了一篇有关如何RESTful重置密码的博客文章。
不幸的是,我不能发布多个链接,但是指向railscast的链接,密码重置博客文章和示例应用程序都在README中(请参见AuthLogic的AuthLogic存储库)
更新:现在我可以发布更多链接,所以我链接了更多链接。谢谢marinatime同时添加链接
回答
我真的很喜欢thinkbot的通关。非常简单,具有一些好的挂钩,并且可以测试。
回答
对Clearance的另一次投票也许不像authlogic那样可定制或者不可行,但是就能够将其放到适当的位置而言,绝对值得一看。
回答
要获得真正简单的解决方案,请使用Clearance。
如果我们正在寻找更多选择,Devise是一个很好的解决方案。它使用Warden,它是基于机架的身份验证系统。