gpt4 book ai didi

ruby-on-rails - Rails 3/设计 : Password salt no longer being created?

转载 作者:行者123 更新时间:2023-12-03 10:36:20 26 4
gpt4 key购买 nike

我一直在研究一个使用 Devise 进行用户身份验证的项目。每当创建用户时,它都会为他们生成一个密码盐以及他们的加密密码。

当我即将结束这个项目时,我正在测试用户注册,并注意到我的新角色没有在数据库中为这些新用户创建密码盐,而我的老用户都有盐。新用户可以正常登录,但我担心 Devise 不再创建盐。

当我升级模块时,我遇到的唯一奇怪的 Devise 必须做,并记住日志说关于删除可加密的内容,因为 bcrypt 现在是默认加密,或者类似的东西。我这样做了...不确定这是否与当前问题有关。

此外,考虑到可能是我的项目被骗了,我从头开始创建了一个全新的 Rails 应用程序并将 Devise 添加到其中,甚至那个新项目也没有为用户创建盐。

Devise 中是否有设置密码盐的新方法,或者有人知道为什么不再创建盐吗?不幸的是,Devise wiki 在这个主题上并没有太多要说的,而且到目前为止,Google 的搜索一直没有结果。

或者......首先是否需要盐?我认为拥有它们似乎更安全。

我的用户/设计配置如下。

配置/初始化程序/devise.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

app/models/user.rb
  devise :database_authenticatable, :registerable, :confirmable,
:recoverable, :rememberable, :trackable, :validatable

更新

我能够在 Devise 升级后找到通知,上面写着......
[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,似乎不推荐使用 password_salt,这解释了为什么不再创建它。所以这回答了这个问题,但我的问题的另一部分仍然存在......这是一个足够好的做法还是我应该使用除 bcrypt 之外的另一种加密?

最佳答案

新版本的 devise 使用加密密码字段的 0 到 29 字符作为 salt,使用该数据库字段中的剩余字符作为加密密码。所以你的密码实际上仍然用 BCrypt 加盐。

关于ruby-on-rails - Rails 3/设计 : Password salt no longer being created?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5606728/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com