Rails 3 / Devise: Password salt больше не создается?

Я уже некоторое время работаю над проектом, который использует Devise для аутентификации пользователей. Всякий раз, когда пользователь создавался, он генерировал для него соль пароля вместе с их зашифрованным паролем.

Когда я подхожу к завершающей части этого проекта, Я тестировал регистрацию пользователей и заметил, что мои новые роли не создавали соль пароля в базе данных для этих новых пользователей, тогда как у всех моих старых пользователей были соли. Новые пользователи могут войти в систему нормально, но меня беспокоит, почему Devise больше не создает соли.

Единственная странность с Devise, с которой я столкнулся, была связана с обновлением модуля и запоминанием журналов, в которых что-то говорилось об удалении зашифрованного как bcrypt теперь шифрование по умолчанию или что-то в этом роде. Что я и сделал ... не уверен, имеет ли это какое-либо отношение к текущей проблеме.

Вдобавок, думая, что, возможно, это был мой проект, я создал новое приложение Rails с нуля и добавил к нему Devise. , и даже этот новый проект не создает солей для пользователей.

Есть ли в Devise новый способ настройки солей паролей, или кто-нибудь знает, почему соли больше не создаются? К сожалению, вики Devise не так много можно сказать по этому поводу, а поиск в Google пока что не дал результатов.

Или ... необходимо ли вообще иметь соли? Мне кажется, более безопасно иметь их.

Моя конфигурация users / devise приведена ниже.

config / initializers / 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

UPDATE

Мне удалось найти уведомление после обновления 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.

Таким образом, кажется, что password_salt устарел, если вы придерживаетесь bcrypt, что объясняет, почему он больше не создается. Итак, это ответ на этот вопрос, но другая часть моего вопроса все еще остается ... Достаточно ли это хорошая практика, или я должен использовать другое шифрование, кроме bcrypt?

25
задан Shannon 9 April 2011 в 20:15
поделиться