2013-10-03 63 views
5

我正在尝试使用wordpress密码,可能会或可能不会被认为是犹太洁食。WordPress的密码重置挂钩

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

问题/疑问:
有几种方法,我可以处理的用户名,但密码是很微妙的。我正在寻找利用WordPress的密码重置界面的钩子,以便任何时候设置一个新的密码,它抓住它的纯文本形式(散列之前),并将其发送到我使用的API散列/存储密码分别为这个非WordPress的应用程序。有没有办法做到这一点?

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

回答

5

是的,/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

您可以尝试使用钩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.',''); 
}