Не удается войти в существующие учетные записи Clearance после обновления с Rails 2.3 до 4.1

#ruby-on-rails #ruby-on-rails-4 #ruby-on-rails-2 #clearance

#ruby-on-rails #ruby-on-rails-4 #ruby-on-rails-2 #Полная распродажа

Вопрос:

Работаю над обновлением старого приложения Rails 2.3 для использования Rails 4. Пока все работает просто отлично, за исключением того, что после обновления Clearance до последней стабильной версии я больше не могу входить в существующие учетные записи пользователей. Ошибки нет, кроме неправильного адреса электронной почты или пароля. Я также могу создавать новые учетные записи и входить в них просто отлично, но существующие недоступны, и я бы не хотел сбрасывать сотни паролей для пользователей, если это вообще возможно.

Я знаю, что Clearance начал использовать BCrypt вместо SHA1 в версиях, используемых после Rails 2.3, поэтому я установил config.password_strategy = Clearance::PasswordStrategies::SHA1 в своем /config/initializers/clearance.rb , чтобы он использовал то же шифрование, с помощью которого были созданы учетные записи. Но это не решило проблему.

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

Спасибо!

Комментарии:

1. Вы читали руководство по обновлению? Внизу говорится, что вам нужно выполнить миграцию на адреса электронной почты с пониженным значением. Это может быть проблемой: github.com/thoughtbot/clearance/wiki/upgrading-clearance

2. @Sharagoz Спасибо, я даже не нашел эту страницу раньше, несмотря на то, что прочитал README. Я только что запустил миграцию вниз, но это пока не решило проблему. Я прочитаю остальное и удостоверюсь, что выполнил все остальное. Спасибо, что указали мне в этом направлении! Если вы можете придумать что-нибудь еще, я был бы признателен за помощь.

3. Я сам не использую clearence, поэтому, к сожалению, не могу вам больше помочь

Ответ №1:

Итак, у меня это работает, и хотя я не совсем понимаю, как конкретно это устраняет проблему, я хотел поделиться на случай, если это когда-нибудь поможет кому-то еще.

В /config/initializers/clearance.rb я переключился с config.password_strategy = Clearance::PasswordStrategies::SHA1 на config.password_strategy = Clearance::PasswordStrategies::BCryptMigrationFromSHA1 .

Я использовал Clearance::Token.new консоль Rails для создания новой remember_token , а затем вручную обновил базу данных, чтобы у нужной мне учетной записи была эта remember_token .

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

Если кто-нибудь хочет подробнее рассказать об этом и точно объяснить, почему это работает, пожалуйста, сделайте.