让我在开始之前说我对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开发人员的复杂性!