我正在权衡是否推出自己的身份验证系统(优秀的Railscast)或使用Devise。
我的问题是,不使用Devise但是根据Railscast进行某些操作会有什么潜在的陷阱?他们需要考虑的安全问题是否已经在演员表中得到了解决?你能想到的任何其他陷阱吗?
编辑:为什么我在考虑不使用Devise?我回避Devise的部分原因是因为我并不热衷于登录失败保护。 Devise的方式意味着任何人都可以锁定其他人的帐户,如果他们只知道他们的电子邮件地址。而且在我看来,总的来说,我最好不要自己动手而不是去了解Devise来做出这些改变,特别是如果我将来还需要以自己的方式做其他事情。 (这似乎很可能)。
答案 0 :(得分:3)
对于基本身份验证(这意味着只拥有用户名和密码),推出自己的身份验证不会有任何严重的陷阱。
现在,如果你还想要:
现在这些实施起来会有点困难。
因此,如果您只想要一个基本的身份验证系统,那么您可以愉快地使用自己的身份验证系统。但如果您担心应用程序的未来,那么也许您应该选择Devise。它并不难理解,它提供了大量功能,之后您不必在实际决定使用Devise时迁移数据。
编辑:所以,重申我说的话。如果这是一个宠物项目,并且您只想拥有一个基本的身份验证系统和授权系统,您只允许某些用户查看某些页面,那么您可以自由地实施自己的项目并随时学习。
但是,如果这是更严重的事情,那么我认为你不应该选择Devise。它让我想起人们创建自己的哈希和加密方案时,他们可以(而且应该!)只使用像bcrypt这样强大而安全的东西。
答案 1 :(得分:2)
我一会儿回答同样的问题。如果您真的希望潜入并花一些时间进行身份验证,请自行创建。但是如果你想快速获得相当标准的东西,那么你可以专注于应用程序的功能,我会建议设计。
默认情况下,Lockable模块似乎没有打开,但无论如何都可以轻松完成。
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :token_authenticatable, :confirmable,
# :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
...
end
此外,如果您确实使用了可锁定模块,因为锁定是基于许多失败的身份验证尝试,您可以在 config/initializers/devise.rb
<中触发锁定之前更改最大尝试次数/ p>
Devise.setup do |config|
...
# Number of authentication tries before locking an account if lock_strategy
# is failed attempts.
config.maximum_attempts = 20
...
end