如标题中所述,何时应该使用设计,何时应该实施我自己的身份验证。从本质上讲,我想知道在一些教程(例如this)中创建的身份验证是否安全且安全。
如果我不需要电子邮件确认,可恢复性等(与Devise相关的很多“爵士乐”),帐户信息是否与我创建自己的信息一样安全?
如果你仍然可能会对我正在寻找的答案感到困惑 - 那么只要有可能/你有帐户,你应该设计一些东西吗?或者它应该是一个决定吗?
注意:我没有特别提到Devise,任何认证宝石都可能被替换。
答案 0 :(得分:8)
实施我自己的身份验证
任何时候你开始考虑是否应该创建自己的身份验证,你需要停止。拿出这个想法,撕碎它,用汽油熄灭它,并烧掉它!
身份验证很难。身份验证中存在微妙之处,用于CRUD样式编程的开发人员将会错过它们。这并不意味着是一种侮辱。我是那些程序员之一,我在安全方面工作。认识到自己的优点和缺点。
Devise(以及大多数流行的身份验证框架)与您自己推出的框架相比,已经进行了数千小时的代码审查,设计,测试和生产时间。
我wrote a blog post about a "smart" security feature实际上使公司的安全性变得更糟。这是微妙的身份验证和安全性的一个很好的例子!
答案 1 :(得分:7)
我曾经使用像Devise这样的宝石,直到Rails将has_secure_password添加到ActiveRecord。现在我总是自己动手,因为最后我总是需要一些自定义的东西,这使得在现有的库中很难实现。
Ryan Bates就这个话题here提供了很好的视频。
答案 2 :(得分:1)
在我看来,你应该根据你的项目来决定。如果您正在使用具有简约功能的小型Web服务,则可以使用Rails提供的工具添加您自己的身份验证。但是如果你正在开发所谓的“企业”,那个具有快速增长功能的大项目你绝对应该使用devise
,因为有了这个宝石,你就不会花时间构建现有的auth功能,这很容易在维护和安全。