Ruby on Rails中用于身份验证的最佳解决方案


84

我正在寻找可以在RoR应用程序中使用的预构建解决方案。理想情况下,我正在寻找与ASP.NET Forms身份验证类似的东西,该身份验证提供电子邮件验证,注册控件并允许用户重置其密码。好的,可以轻松地让我拉出当前登录到该应用程序的用户。

我已经开始研究已经写过的文章,但是我发现它确实令人困惑。我看过LoginGenerator,RestfulAuthentication,SaltedLoginGenerator,但是似乎没有一个地方提供出色的教程或提供它们的比较。如果有一个我尚未发现的站点,或者大多数人都使用了事实上的标准,我将不胜感激。

Answers:


83

AuthLogic似乎是新手,似乎是restful_authentication的下一个发展,更易于使用等

http://github.com/binarylogic/authlogic/tree/master

编辑:既然Rails 3已经发布,Devise似乎是一个新的,新生的孩子

https://github.com/plataformatec/devise 或我现在正在使用has_secure_password内置到Rails的滚动自带身份验证http://railscasts.com/episodes/250-authentication-from-scratch-revised

旁注:Ruby Toolbox是一个不错的网站,可用于查找各种类别中的当前最佳解决方案(基于GitHub观察者的数量):

http://ruby-toolbox.com/categories/rails_authentication.html


我真的会考虑使用authlogic。它比restful_auth干净得多。Authlogic从以前的所有解决方案中吸取了经验,并将它们重新打包为一个更干净,更可自定义的解决方案
taelor

我接受了您的建议,并选择了Authlogic,我感到非常高兴。安装可能会花费一些时间,这很干净而且易于理解。没有可怕的生成代码堆。
Guy C

是的,它需要花费更长的时间进行设置。我希望他在那里删除了一些抽象,并随每个人一起提供了它所需要的东西,例如忘记密码和包括电子邮件确认。但总的来说,它仍然相当不错。
Brian Armstrong,2009年

我也能够将其与OpenID和RPXNow结合使用,结果非常出色,例如:Buyervote.com/user_session/new
Brian Armstrong,2009年

该示例项目使启动和运行变得非常容易。只需git克隆存储库,将其复制到database.yml文件中,您便可以准备一个经过完全身份验证的站点。
Casey Watson

22

我真的会推荐Restful Authentication。我认为这实际上是事实上的标准。


1
我会第二。最近,我不得不实施一个非常复杂的多站点身份验证系统,该系统基于RestfulAuth设计的基础上,为应用程序的其余部分提供了与RA相同的API。读取代码:-)
Laurie Young

10

对于真正简单的解决方案,请使用Clearance

如果您正在寻找更多选择,Devise是一个很好的解决方案。它使用Warden,这是基于机架的身份验证系统。


1
我可以担保Devise。我在应用程序中进行了设置,可以说它易于使用,至少对我来说是相对较新的人。我在这里写了我的经验博客:therealmattslay.blogspot.com/2010/06/…– MattSlay 2010
6

抱歉...这是已更正的链接:mattslay.com/devise-authentication-for-rails
MattSlay


3

只需注意一下,LoginGenerator和SaltedLoginGenerator已被Restful Authentication取代,并且在较新的Rails版本中不受支持-不要浪费任何时间,尽管它们当时很棒。


3

我还想指出一个很好的教程/讨论以扩展Restful Authentication的核心功能,以防您需要更强大的功能。


1
请不要认为我非常粗鲁,但是我认为论坛条目是Restful身份验证最糟糕的部分。这里有许多缺失的功能,这是一个冗长(且矛盾)的步骤,一次只能添加一个。不管DRY的对立面是什么,我都可以确定。只是您没有在重复自己,而是在重复数百名其他开发人员,以从一开始就包含RA应该包含或可选的内容。
约翰·蒙施

3

我真的很喜欢thinkbot的通关。非常简单,具有一些好的挂钩,并且可以测试。


3

验证逻辑似乎就是您想要的。它是非常可配置的,尽管它不会为您生成代码,但是它非常易于使用。对于电子邮件验证和密码恢复,您可能要使用此:perishable_token列。AuthLogic会处理它,您只需要在使用它时将其重置。有关如何设置基本应用程序的信息,您可以查看AuthLogic上的Ryan Bates的Railscast和“官方”示例应用程序。AuthLogic的创建者本·约翰逊(Ben Johnson)也写了一篇博客文章,介绍如何RESTful重置密码。

不幸的是,我不能发布多个链接,但是指向railscast的链接,密码重置博客文章和示例应用程序都在README中(请参见AuthLogic的AuthLogic存储库)

更新:现在我可以发布更多链接,所以我链接了更多链接。谢谢marinatime同时添加链接



2

restful_authentication是一个功能强大的工具,它非常灵活,可以立即提供您要查找的大多数内容。但是,请注意以下几点:

  1. 不要以“控制”来思考。在Rails中,模型,视图和控制器比“ Webforms风格”的ASP.NET更独立。独立地计算出每个层的需求,编写匹配的测试/规格,并确保每个层都在按您的期望进行。
  2. 即使您使用的是插件,也无法替代读取(至少一些)生成的代码。如果您对幕后情况有一个全面的了解,您会发现调试和自定义要容易得多。

2

插件restful_authentication和其他扩展它的插件可以完美满足您的需求。在github.com上快速搜索将发现许多教程,示例和扩展。只是去这里:
- http://github.com/search?q=restful_authentication

有几个使用restful_authentication的项目只是为了提供仅带有身份验证部分的准Rails应用程序的示例。

  1. http://github.com/fudgestudios/bort-一个基本的Rails应用程序,具有:RESTful身份验证
  2. http://github.com/mrflip/restful_authentication_example-另一个关于如何使用restful_authentication的示例的项目
  3. http://github.com/activefx/restful_authentication_tutorial-与上面相同,捆绑了一些其他插件。
  4. http://railscasts.com/episodes/67-restful-authentication-很棒的截屏视频,介绍了restful_authentication

这些信息应该足以使您开始寻找头和尾...祝您好运。


2

只是更新此内容:Ryan Bates的Railscast#250显示了从头开始构建身份验证系统...。


2
尽管定制认证系统上的RailsCast很棒(并且我已经多次实现类似的系统),但它绝不是预先构建的,并且不提供像Devise这样的设置所具有的所有功能。
Colin R

同意,但是Devise可能非常庞大。在我看来,除非您真正要充分利用Devise提供的功能,否则通过构建自己的身份验证系统可以节省很多时间和心痛。
亚当·乔纳斯

2
我正在寻找可以在RoR应用程序中使用的预构建解决方案。
Colin R

0

对Clearance的另一投票-可能不像authlogic那样可定制或不起作用,但是就能够将其放到适当位置而言,绝对值得一看。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.