【发布时间】:2011-10-03 23:53:33
【问题描述】:
Drupal 6 user password import to Drupal 7 是 MD5 散列密码的答案。 我自己不是程序员;)我正在努力寻找我应该在哪里更改代码,以便使用不是来自先前版本的 Drupal,而是来自 PHP-Fusion(7.02.01)的用户密码。有人可以帮助我吗? :)
【问题讨论】:
Drupal 6 user password import to Drupal 7 是 MD5 散列密码的答案。 我自己不是程序员;)我正在努力寻找我应该在哪里更改代码,以便使用不是来自先前版本的 Drupal,而是来自 PHP-Fusion(7.02.01)的用户密码。有人可以帮助我吗? :)
【问题讨论】:
Drupal 7 中的散列机制是可切换的。如password.inc的文档中所述,您可以设置password_inc(例如在settings.php中:$conf['password_inc'] = '/path/to/alternative/file.inc')。在该文件中,您需要实现上述链接中提到的 3 个函数,以使用 PHP-Fusion 使用的格式(您可以在很大程度上重复使用该格式)。
这样,您可以继续使用旧的哈希值。您还可以实现某种逻辑以使用默认散列算法的新密码并强制用户在下次登录时设置新密码。这可能允许您在一年左右后删除这部分代码活跃用户已更新。
【讨论】:
$password = md5($password);。但正如我之前提到的链接中所述,它实际上不适用于 MD5 密码。如果您执行@hross 描述的重新散列,它会起作用。如果我将其更改为双 MD5,我是否也可以使用类似的 rehash 方法?如果 Drupal 接受双重 MD5 密码并在用户下次登录时将其重新散列为默认的加盐 sha512 会更好。抱歉,我在这里真的有点像盲人;)但我真的很感激你的帮助。
$password = md5($password); 更改为 $password = md5(md5($password));。其余代码与旧 password.inc 中的代码相同,但我仍然无法登录。我还应该更改 password.inc 中的哪些内容?稍后有$hash = _password_crypt('md5', $password, $stored_hash);,但我不知道'md5'部分的确切作用。无论如何,如果我将其更改为“md5md5”,它仍然无法正常工作。