我目前正在从一个自定义平台转移到WordPress。
我认为,由于加密的原因,无论如何都无法从我们当前的站点迁移密码。
一旦我们启动新网站,将通过电子邮件向用户发送重置密码的信息,但从过去的数据来看,我知道大多数用户都会忽略这封电子邮件。
我的想法是在用户尝试登录时自动触发密码重置。我本来打算使用“过期密码”插件,但似乎需要输入正确的密码才能触发重置密码操作。
对如何解决这个问题有什么建议吗?感谢您的时间和帮助。干杯
SO网友:Derek Held
如果您当前的平台位于PHP上并使用password_hash()
要创建哈希密码,可以使用如下插件password-bcrypt 或PHP Native Password Hash. 就个人而言,我建议使用后者,因为该插件还支持Argon2,它比bcrypt更强大。如果您改为使用crypt()
要创建bcrypt哈希密码likely already works with WordPress 没有你的进一步努力。无论是哪种情况,您都可以简单地将用户的所有哈希密码复制到WordPress数据库中,每个人都应该能够使用现有密码登录。
现在,如果您仍然想强制重置密码,您可以通过使用脚本为所有用户设置新的随机密码来实现。他们将无法登录,并将被迫执行重置过程。在PHP 7+中,您可以为每个用户执行以下操作:
$db = new mysqli(\'dbhost\', \'dbuser\', \'dbpass\', \'dbname\');
// Get array $userList with all usernames from DB or somewhere else
foreach ( $userList as $user ) {
$hashed = password_hash( random_bytes(16) );
$db->query( \'update wp_users set user_pass=\'.$hashed.\' where user_login=\'.$user);
}
$db->close();
The
default in PHP 对于
password_hash()
就是创建一个bcrypt哈希,既然这个想法是为了强制重置,我就不用费心尝试使用更强大的算法了。您还将使用
random_bytes
这是
designed to create cryptographically secure 随机数据。