Estoy en medio de mi migración de WordPress a Rails. En Rails usaré Devise, el único problema es la contraseña hash de los usuarios de wordpress existentes.
Si migro a todos los usuarios a Rails, ¿cómo puedo autenticarme con su contraseña anterior? ¿Es posible que los rieles generen el mismo hash que wordpress?
Sí. Necesitaras crear un encriptador personalizado para Idear.
WordPress puede codificar contraseñas de varias maneras, pero por defecto usa phpass. Hay una implementación de Ruby como una gema llamada phpass-ruby, que podría usar como base para su encriptador. Es posible que deba modificar esto para usar su sal WP. Alternativamente, echa un vistazo esta esencia.
Pero…
Si es posible, recomendaría importar los usuarios, luego enviando un correo electrónico a cada pidiéndoles que creen una nueva contraseña. Si sus contraseñas anteriores tienen hash MD5, esto será más seguro y podría decirse que podría ser más fácil de usar, ya que es posible que los usuarios (o el software) no asocien la contraseña anterior con el nuevo sitio.
Cloe
Esto permitirá la autenticación con la contraseña anterior. Si cambian su contraseña, usará el hash Devise BCrypt predeterminado en su lugar.
Gemfile
gem 'phpass-ruby' # check WordPress passwords
User.rb
require "phpass"
class User < ApplicationRecord
# For Devise to use WordPress passwords. WordPress uses a portable PHPass of MD5 plus a salt.
def valid_password?(password)
return false if encrypted_password.blank?
begin
return true if super
rescue BCrypt::Errors::InvalidHash => e
logger.info "Invalid BCrypt password for #{email}. Fallback to PHPass."
end
# Fallback to PHPass
phpass = Phpass.new(8)
return phpass.check(password, encrypted_password)
end
-
Esto parece que ya no funciona. (¿quizás la versión de wordpress importa?)
– jdar
15 oct 2019 a las 0:30