WordPress密码重置挂钩

7
我想做一些关于wordpress密码的事情,这可能是合法的也可能不合法。
情况: 基本上,我有两个不同的服务,都需要密码。其中一个服务是一个简单的wordpress账户,另一个是另一个应用程序,与wordpress无关。我希望在这两个服务之间同步用户名和密码,这意味着每次wordpress用户名更改时,应用程序的用户名更改,每次wordpress密码更改时,应用程序的密码更改。
问题/疑问: 处理用户名有几种方法,但密码是棘手的。我正在寻找一种方式来利用wordpress密码重置界面中的钩子,以便在设置新密码时,以明文形式(在其被哈希之前)获取它并将其发送到我用于单独哈希/存储非wordpress应用程序的密码的API。有什么办法实现这个?
非常感谢提供任何解决方案。

我知道这个问题已经很老了,但你是如何解决的呢?你的“建议解决方案”看起来很容易被利用来获取用户密码,因此我很好奇你是如何处理的。也许你在传输过程中加密了密码或者其他什么方法吗? - InanisAtheos
@Athoxx,这个方法有点不太正规,但是我记得我可以访问另一个应用程序的后端,所以在将密码发送到API之前,我对其进行了加密,然后在另一个应用程序接收到该参数后解密它。 - neanderslob
2个回答

7

是的,在/wp-login.php(密码重置)和/wp-admin/includes/user.php(用户页面中的密码更改)中,都有相应的钩子。

# When reseting password in wp-login
add_action( 'password_reset', function( $user, $pass ) 
{
    var_dump( $pass );
    die();
}, 10, 2 );

并且。
# When checking if passwords match
add_action( 'check_passwords', function( $user, $pass1, $pass2 ) 
{
    var_dump( $pass1 );
    die();
}, 10, 3 );

-1

您可以尝试使用 hook validate_password_reset 来验证密码。以下代码可用于验证字母数字组合的密码。

add_action('validate_password_reset','wdm_validate_password_reset',10,2);

function wdm_validate_password_reset( $errors, $user)
{
    $exp = '/^(?=.*\d)((?=.*[a-z])|(?=.*[A-Z])).{6,32}$/';

    if(strlen($_POST['pass1'])<6 || !preg_match($exp, $_POST['pass1']) )
           $errors->add( 'error',  'Password must be alphanumeric and contain minimum 6 characters.','');
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接