【问题标题】:Wordpress users migration to rails deviseWordPress 用户迁移到 Rails 设计
【发布时间】:2015-05-02 11:20:39
【问题描述】:

我正在将 wordpress 迁移到 Rails。在我将使用设计的rails中,唯一的问题是现有的wordpress用户哈希密码。

如果我将所有用户迁移到 Rails,我如何使用旧密码进行身份验证。 rails 是否可以生成与 wordpress 相同的哈希?

【问题讨论】:

    标签: ruby-on-rails wordpress hash passwords migration


    【解决方案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 散列,这将更安全,并且可以说它可能对用户更友好,因为用户(或软件)可能不会将旧密码与新网站相关联。

    【讨论】:

      猜你喜欢
      • 2013-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多