Я не могу зарегистрировать пользователя через LinkedIn на своем рабочем сайте. Он показывает такую ошибку:
Completed 500 Internal Server Error in 202ms (ActiveRecord: 3.8ms)
[f842309d-189a-4edc-bafb-a6a567ea8fcd]
[f842309d-189a-4edc-bafb-a6a567ea8fcd] BCrypt::Errors::InvalidHash (invalid hash):
[f842309d-189a-4edc-bafb-a6a567ea8fcd]
[f842309d-189a-4edc-bafb-a6a567ea8fcd] app/models/user.rb:82:in `from_omniauth'
[f842309d-189a-4edc-bafb-a6a567ea8fcd] app/controllers/users/omniauth_callbacks_controller.rb:9:in `linkedin'
Он отлично работает на моем локальном компьютере.
class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
def linkedin
@user = User.from_omniauth(auth_hash, current_user, session)
remember_me(@user)
session[:user_id] = @user.id
if !(@user.img_url == auth_hash.info.picture_url)
@user.update_attributes(:img_url => auth_hash.info.picture_url)
end
if not @user.persisted?
session["devise.linkedin_data"] = auth_hash
render body: session.to_json
end
sign_in_and_redirect(:user, @user)
end
end
Модель пользователя
def self.from_omniauth(auth, signed_in=nil, session)
user.password = Devise.friendly_token unless user.encrypted_password.present?
end
Может кто-нибудь помочь мне разобраться в этой ошибке и как я могу ее исправить, пожалуйста?
@SimonFranzen, мы также используем devise для входа в систему, я даже пробовал использовать безопасный случайный выбор, и он выдает ту же ошибку. user.password = SecureRandom.urlsafe_base64, если не указан user.encrypted_password.present?





Правильно ли вы установили все секреты конфигурации devise? Проверьте инициализатор устройства и переменные ENV на рабочем сервере. Я думаю, что на сервере отсутствует переменная ENV, чтобы сообщить bcrypt, какую соль использовать для хранения пароля
да, все настроено правильно. Он отлично работает на моей локальной машине.
Вы пробовали обновить свой bcrypt до 3.1.12?
Вот ссылка на ВЫПУСК GITHUB
эй, а почему вы указали Devise.friendly_token в качестве пароля для связанного входа в систему? Создайте случайный пароль, чтобы сделать разработку счастливой. SecureRandom.uuid или что-то в этом роде