php – WordPress用户身份验证过程
我正在构建一个wordpress系统,我想从外部源代替wordpress DB验证用户.我正在使用wsdl服务与外部数据库通信,我根据他们的凭据获得正确的用户信息.但是我没有得到如何进一步处理获得的结果.有人请帮帮我.
以下是我到目前为止所做的步骤 在pluggable.php中创建自定义函数并在user.php中调用它 function wp_authenticate_username_password($user,$username,$password) { if ( is_a($user,'WP_User') ) { return $user; } if ( empty($username) || empty($password) ) { if ( is_wp_error( $user ) ) return $user; $error = new WP_Error(); if ( empty($username) ) $error->add('empty_username',__('<strong>ERROR</strong>: The username field is empty.')); if ( empty($password) ) $error->add('empty_password',__('<strong>ERROR</strong>: The password field is empty.')); return $error; } //$user = get_user_by('login',$username); /*Replaced it with the below*/ $user = validate_ep($username,$password); echo "<pre>"; print_r($user); /*Produces the result in step 3*/ echo "</pre>"; exit; pluggable.php中的自定义函数,与我的外部数据库通信 function validate_ep($username,$userpwd) { $wsdl = "my web service path"; $client = new SoapClient($wsdl); //(Parameter is the wsdl file in which the services are written. $newObj = new stdClass; $user_name = ucfirst($username); $user_pwd = md5($userpwd); $display_type = 'wp'; try { $result = $client->log_process(array(0 => $user_name,1 => $user_pwd,2 => $display_type)); if ($result==FALSE) return FALSE; foreach($result->item as $key=>$valObj) { if(!is_numeric($valObj->key)) { $newObj->{$valObj->key} = $valObj->value; } } /*$actual = unserialize(base64_decode($result));*/ if (count($result) > 0) { $user = new WP_User; $user->init($newObj); return $user; } } catch (SoapFault $exp) { //print_r( $exp->getMessage()); } return false; } 从Web服务返回的结果 WP_User Object ( [data] => stdClass Object ( [id] => ID [organization] => ID [login] => UserName [password] => *** [name] => Name ) [ID] => 0 [caps] => Array ( ) [cap_key] => wp_capabilities [roles] => Array ( ) [allcaps] => Array ( ) [filter] => ) 有人请帮助我在这些步骤后做些什么.
我建议不要像改变user.php那样更改WordPress核心文件,因为一旦WordPress核心升级,它将被覆盖.相反,我建议您阅读以下文章:
WordPress Replace built in user authentication 它在视频演示中也有解释. 我正在添加以下摘要: 更换内置身份验证时应注意什么 WordPress在很大程度上依赖于它的内置用户系统.因此,在WordPress数据库中有很多对用户的引用.虽然有点烦人,但解决这些限制仍然相当简单. WordPress要求WordPress数据库中存在真实用户(WordPress用户)才能对该用户执行操作.幸运的是,WordPress包含创建,操作和删除用户的功能.因此,当我们构建我们的服务时,我们实际上将采取以下步骤,这应该是相当认证类型不可知的: >通过备用方法验证用户 >如果无效用户显示无效的登录消息 >检查WordPress用户表中是否存在该用户 >从备用身份验证服务用户信息自动创建新用户>在WP_User对象中创建用户加载并返回用户数据之后 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |