如何使用PASSWORD_RESET挂钩验证新密码并显示错误

时间:2012-09-17 作者:NightHawk

当用户通过密码重置电子邮件中的链接重置密码时,我知道我可以使用password_reset 钩子以获取用户对象和新密码。我想验证新密码以确保满足强度要求,但我不确定如何生成错误消息,以便它们显示在表单上方。

当我通过user_profile_update_errors 胡克,我有一个WP_Error 我可以增加,但不能用这个钩子。

处理这个问题的最佳方法是什么?

3 个回复
SO网友:Domain

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

SO网友:Amit Geek

要执行此操作,首先您必须退出队列\'wc-password-strength-meter\' 编写脚本,然后使用\'validate_password_reset\' 钩子以应用自定义验证。

以下代码可用于验证最少8个字符,最多20个字符,并且必须至少包含一个大写字母、数字和特殊字符。

使用退出队列脚本\'wp_print_scripts\'

使用自定义验证\'validate_password_reset\'

function geek_wc_remove_password_strength(){
  if ( wp_script_is( \'wc-password-strength-meter\', \'enqueued\' ) ) {
    wp_dequeue_script( \'wc-password-strength-meter\' );
  }
}
add_action( \'wp_print_scripts\', \'geek_wc_remove_password_strength\', 100 );

add_action(\'validate_password_reset\',\'geek_validate_password_reset\',10,2);
function geek_validate_password_reset($errors, $user){
  $exp = \'/^(?=.*[A-Za-z])(?=.*[A-Z])(?=.*[@$!%*#?&])[A-Za-z\\d@$!%*#?&]{8,20}$/\';
  if(strlen($_POST[\'password_1\'])<8 || !preg_match($exp, $_POST[\'password_1\']) ){
    $errors->add( \'error\',  \'Hint: Password length must be minimum 8 characters and maximum 20, and must contain at least one capital letter, number and punctuation mark.\',\'\');
  }     
}

SO网友:Kuldeep Daftary

我不能百分之百肯定我是否理解你的问题,但是here\'s the plugin 这会强制用户输入强密码。

结束

相关推荐

Displaying oEmbed errors?

有时,通过oEmbed嵌入项目是不可能的,例如,当YouTube视频已禁用嵌入时。The oEmbed service will return a 401 Unauthorized, 并且不会转换代码。有没有办法通知用户这一点?当前的工作流是非直观的(至少对我来说),我更喜欢在WordPress页面上,或者更好的是,在编辑器中显示一条消息,说明对象无法嵌入。