WordPress 用户迁移到 Rails 设计
Posted
技术标签:
【中文标题】WordPress 用户迁移到 Rails 设计【英文标题】:Wordpress users migration to rails devise 【发布时间】:2015-05-02 11:20:39 【问题描述】:我正在将 wordpress 迁移到 Rails。在我将使用设计的rails中,唯一的问题是现有的wordpress用户哈希密码。
如果我将所有用户迁移到 Rails,我如何使用旧密码进行身份验证。 rails 是否可以生成与 wordpress 相同的哈希?
【问题讨论】:
【参考方案1】:这将允许使用旧密码进行身份验证。如果他们更改密码,它将使用默认的 Devise BCrypt 哈希值。
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
【讨论】:
这似乎不再有效。 (也许 wordpress 版本很重要?)【参考方案2】:是的。您需要 create a custom encryptor 进行设计。
Wordpress 可以通过多种方式散列密码,但 by default uses phpass。有一个名为 phpass-ruby 的 gem 的 ruby 实现,您可以将其用作加密器的基础。您可能需要修改它以使用您的 WP 盐。或者,查看this gist。
但是……
如果可能,我建议导入用户,然后sending out an email to each 要求他们创建新密码。如果您的旧密码经过 MD5 散列,这将更安全,并且可以说它可能对用户更友好,因为用户(或软件)可能不会将旧密码与新网站相关联。
【讨论】:
以上是关于WordPress 用户迁移到 Rails 设计的主要内容,如果未能解决你的问题,请参考以下文章
将 Wordpress (MySQL) 数据库迁移到 BigQuery