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 仪表板

新站第一篇,迁移drupal到wordpress

将 Wordpress (MySQL) 数据库迁移到 BigQuery

从传统的 Laravel/Rails 应用迁移到 React.js 生态系统。需要在前端进行数据管理

Rails 创建没有迁移的表

WordPress网站搬家数据迁移完整教程