Ruby on rails Rails 3/设计:不再创建密码?
我已经在一个项目上工作了一段时间,该项目使用Desive进行用户身份验证。无论何时创建用户,它都会为他们生成一个密码以及加密的密码 当我即将结束这个项目时,我正在测试用户注册,并注意到我的新角色没有在数据库中为这些新用户创建密码salt,而我的老用户都有salt。新用户可以很好地登录,但我担心Desive为什么不再生产盐了 我遇到的Desive唯一的奇怪之处是在升级模块时,还记得日志中说要删除encryptable,因为bcrypt现在是默认加密,或者类似的东西。我这样做了…不确定这是否与当前问题有关 此外,考虑到可能是我的项目失败了,我从零开始创建了一个全新的Rails应用程序,并在其中添加了Desive,即使是这个新项目也没有为用户创造盐 在Desive中是否有一种新的方法来设置密码盐,或者有人知道为什么不再创建密码盐了吗?不幸的是,Desive wiki在这个问题上没有太多的话要说,谷歌到目前为止一直是一个毫无结果的搜索 或者…一开始就需要盐吗?我想,拥有它们似乎更安全 我的用户/设备配置如下 config/initializers/designe.rbRuby on rails Rails 3/设计:不再创建密码?,ruby-on-rails,authentication,encryption,devise,salt,Ruby On Rails,Authentication,Encryption,Devise,Salt,我已经在一个项目上工作了一段时间,该项目使用Desive进行用户身份验证。无论何时创建用户,它都会为他们生成一个密码以及加密的密码 当我即将结束这个项目时,我正在测试用户注册,并注意到我的新角色没有在数据库中为这些新用户创建密码salt,而我的老用户都有salt。新用户可以很好地登录,但我担心Desive为什么不再生产盐了 我遇到的Desive唯一的奇怪之处是在升级模块时,还记得日志中说要删除encryptable,因为bcrypt现在是默认加密,或者类似的东西。我这样做了…不确定这是否与当前问
Devise.setup do |config|
config.mailer_sender = "mail@domain.com"
require 'devise/orm/active_record'
config.authentication_keys = [ :login ]
config.stretches = 10
config.encryptor = :bcrypt
# Setup a pepper to generate the encrypted password.
config.pepper = "79c2bf3b[...]"
end
devise :database_authenticatable, :registerable, :confirmable,
:recoverable, :rememberable, :trackable, :validatable
app/models/user.rb
Devise.setup do |config|
config.mailer_sender = "mail@domain.com"
require 'devise/orm/active_record'
config.authentication_keys = [ :login ]
config.stretches = 10
config.encryptor = :bcrypt
# Setup a pepper to generate the encrypted password.
config.pepper = "79c2bf3b[...]"
end
devise :database_authenticatable, :registerable, :confirmable,
:recoverable, :rememberable, :trackable, :validatable
更新
我能在设备升级后找到通知,上面写着
[DEVISE] From version 1.2, there is no need to set your encryptor to bcrypt since encryptors are only enabled if you include :encryptable in your models. To update your app, please:
1) Remove config.encryptor from your initializer;
2) Add t.encryptable to your old migrations;
3) [Optional] Remove password_salt in a new recent migration. Bcrypt does not require it anymore.
因此,如果您坚持使用bcrypt,则密码_salt似乎不受欢迎,这解释了为什么不再创建它。这就回答了这个问题,但我问题的另一部分仍然存在……这是一种足够好的做法,还是我应该使用bcrypt之外的另一种加密?佩尔·何塞·瓦利姆:
设计1.2.1不要求
密码\u盐栏,如果您
正在使用bcrypt。如果你需要一种
关于盐,我相信有一种方法
你可以把它叫做盐
用于检索此类值。
新版本的Deviate使用加密密码字段中的0到29个字符作为salt,并使用该数据库字段中的其余字符作为加密密码。所以你的密码实际上还是用BCrypt加了盐。Heh,你的回答和我在上面更新的时候一样,但答案都一样。;)如果是这样的话,你认为继续使用bcrypt是可以的吗?我本以为盐总是很重要的,但我不是安全专家。可能会对你有所帮助。关于这个主题的一点更新:我正在研究关于这个主题的更多信息,显然BCrypt将salt加密到密码中,而不是一个单独的东西。这当然可以解释为什么Desive中的盐柱被丢弃了。