7

我正在尝试使用可能会或可能不会被视为犹太洁食的 wordpress 密码做一些事情。

情况:
基本上我有两个不同的服务都需要密码。这些服务之一是一个简单的 wordpress 帐户,一个是另一个应用程序,与 wordpress 无关。我想在两者之间同步用户名和密码,这意味着每次 wordpress 用户名更改时,应用程序的用户名都会更改,并且每次 wordpress 密码更改时,应用程序的密码都会更改。

问题/问题:
有几种方法可以处理用户名,但密码是一个棘手的问题。我正在寻找利用 wordpress 密码重置界面中的一个钩子,以便在设置新密码时,它会以纯文本形式(在散列之前)抓取它并将其发送到我正在使用的 API为此非 wordpress 应用程序单独散列/存储密码。有没有办法做到这一点?

任何解决方案的镜头都非常感谢。

4

2 回答 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 );
于 2013-10-03T23:03:09.327 回答
-1

您可以尝试使用挂钩 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.','');
}
于 2015-05-30T17:53:46.433 回答