对不同的登录使用不同的密码哈希

时间:2019-03-19 17:04:34

标签: wordpress wordpress-login

让我在开始之前说我对WP开发人员还很陌生,并且正在研究一些想法。

基本上,我正在尝试将用户凭据从旧版系统移植到WP系统以使用专有插件,但是请保持旧版系统密码不变。我知道通过添加wp_hash_password()并返回带有自定义旧式哈希的结果,可以很容易地实现自定义哈希。但是,这显然“破坏”了可能使用wp-admin登录的用户当前存储的密码的哈希。

是否可以通过调用自定义哈希算法的自定义登录页面正确登录用户,以维护已建立的wp用户凭据的完整性?

我已经尝试了以下方法(基本上):

$user = $get_user_by('login',$_POST['loginid']);
if(!$user){
    return login fail;
}

if(!custom_wp_check_password($_POST['loginpass'],$user->user_pass)){
    return login fail;
}

wp_set_auth_cookie($_POST['loginid'], false);
wp_set_current_user($user->ID, $user->display_name);
do_action('wp_login',$user->user_login, $user);
wp_redirect(get_option('login_success_redirect'));exit;

function custom_wp_check_password($plain, $hashed){
    if(custom_wp_hash_password($plain)==$hashed){
        return true;
    }else{
        return false
    }
}

custom_wp_hash_password()返回旧式哈希值的地方。

但是,一旦我进入“ login_success_redirect”页面,“用户”就不会登录。

但是,如果我覆盖插件中的wp密码检查和哈希并使用wp_signon,则可以正常工作

$user = $get_user_by('login',$_POST['loginid']);
if(!$user){
    return login fail;
}

if(!wp_check_password($_POST['loginpass'],$user->user_pass)){
    return login fail;
}

$user = wp_signon(array('user_login'=>$_POST['loginid'],'user_password'=>$_POST['loginpass']));
wp_redirect(get_option('login_success_redirect'));exit;

function wp_check_password($plain, $hashed){
    if(wp_hash_password($plain)==$hashed){
        return true;
    }else{
        return false
    }
}

任何有关我应该完成什么工作的见解(如果可能的话)。为了澄清一点,我确定会问我-是的,旧系统用户不应该只能通过自定义插件通过wp-admin登录。

感谢您的投入,有兴趣阅读回复并进一步了解wp开发人员的复杂性!

0 个答案:

没有答案
相关问题