【问题标题】:Why shouldn't rails noobs use Gem Devise? [closed]为什么 rails noobs 不应该使用 Gem Devise? [关闭]
【发布时间】:2013-04-12 21:14:18
【问题描述】:

我是一个 ruby​​ on rails 菜鸟。相比之下,我的 HTML CSS javascript 和 jQuery 相当不错。最近,我使用 Michael Hartl 的本教程进入了 ruby​​ on rails:http://ruby.railstutorial.org/ruby-on-rails-tutorial-book

但是我正在尝试构建自己的项目并使用gem devise 作为一种简单的身份验证方式。因为初学者很难进行身份验证。但是,每个人都提到菜鸟不应该使用这个宝石。

为什么菜鸟不应该为自己的项目使用设计?

非常感谢您提供的任何提示,但我更喜欢详细的答案。

【问题讨论】:

  • 你总是听别人说你不能做事吗?尝试一下。如果你管理它,很好,如果你没有,请寻求帮助。但是,您当前的问题是题外话。
  • @SébastienRenauld 我不认为这是题外话。如果有的话,它的措辞很糟糕,但在我看来这是一个合理的问题。
  • @Mohamad:确实措辞不当。 “设计易于使用/我如何使用设计?”与“为什么菜鸟不应该使用设计?”相比,它的主观性/偏见要少得多。第一个征求意见,第二个征求意见。

标签: ruby-on-rails ruby devise gem


【解决方案1】:

我完全不同意你迄今为止得到的建议,包括这里的其他答案。

滚动您自己的身份验证,尤其是作为初学者,是让您的用户面临风险的好方法。安全性(尤其是加密)很难,即使您有经验,您也可能会以某种方式弄错。

如果您想了解基于密码的身份验证的工作原理(并且应该),请在空闲时间学习。不要让您的用户在不知情的情况下测试受试者,并将他们的隐私置于危险之中。

【讨论】:

  • 我原则上同意。但是还有许多其他事情可能会使您的用户面临风险。在不真正了解框架或语言如何工作的情况下构建应用程序可能会带来同样的风险。我认为,在您了解安全基础知识之前,您不应该构建一个严肃的应用程序。使用 Devise 不会教你这个。
  • ...也不会教您如何将资源范围限定给当前用户,等等。
  • 所以你的论点是因为你可以在别处犯错误,你不应该关心你是否在 auth 上犯了错误?
  • 如果你不犯错,你永远学不会。使用 gem 可以帮助您避免错误,但它既不会使您的应用程序更安全,也不会使您成为更好的程序员。 “编写自己的身份验证是有风险的”是无稽之谈。编写 auth 并不需要天才。 Auth 建立在抽象库之上;您不是在重新发明轮子或编写密码学。您正在使用 API。所以在开始一个严肃的应用程序之前,你会做什么?你学习 API。使用 Devise 会让你很可能在其他地方犯错。不管有没有 Devise,在你学习 API 之前,你仍然是一个无知的程序员。
  • 嗯。好像 Devise 的开发者不同意你的观点:github.com/plataformatec/devise#starting-with-rails
【解决方案2】:

除非您打算在不做任何修改的情况下直接使用 Devise,否则使用 Devise 可能比编写自己的身份验证花费更多时间。

这取决于您的需求有多复杂。比如是否需要忘记密码功能、验证功能等...

使用 Rails 的has_secure_password 实现您自己的身份验证非常简单。了解幕后发生的事情也非常有帮助。这是学习过程的一部分,简单而有趣。

编写一个基本的身份验证实际上需要大约 10 行代码。正如其他人所说,除非您有迫切需要,否则请按照教程进行操作。你会从中学到很多好东西,而使用 Devise 会让你错过很多重要的信息。

【讨论】:

  • 我不同意这个答案的某些部分。 Devise 内置了 10 个不同的模块(rememberable、forgot_password 等),作为滚动您自己的 Auth 的一部分,创建这些模块需要 10 多行代码。
  • @Catfish,点了。虽然remember_me 功能需要大约 6 行代码。我会澄清的。
  • 学习如何从头开始创建用户,除了迁移之外不使用生成器,这是我第一次觉得我真正理解了 rails 的工作原理,它教你路由,调用什么顺序控制器,什么before_filter/before_action 是,如何从与控制器不同的模型中访问信息。我在自己滚动之前尝试使用 Devise,我发现与自己滚动相比,Devise 是一个令人头疼的问题。 OO 是您最强大的宝石,学习吧。
【解决方案3】:

这个想法是,作为一个菜鸟,学习身份验证工作原理的基础知识非常有用。即使在未来的项目中您最终一直使用 Devise,拥有开发自己的身份验证的经验以了解 Devise 幕后发生的事情也非常有帮助。

您需要对此做出自己的决定。如果您急于推出一款应用程序,那么首先学习如何使用 Devise 可能是正确的方法。如果你有时间,试着弄清楚如何自己动手是个好主意。至少,值得您花时间查看 Ryan Bates 的滚动视频:http://railscasts.com/episodes/250-authentication-from-scratch

此外,Devise 文档中的以下内容不鼓励新的 Rails 开发人员使用 Devise:https://github.com/plataformatec/devise#starting-with-rails

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-18
    • 1970-01-01
    相关资源
    最近更新 更多