我正在构建一个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;
Run Code Online (Sandbox Code Playgroud)
自定义功能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;
}
Run Code Online (Sandbox Code Playgroud)
从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] =>
)
Run Code Online (Sandbox Code Playgroud)
有人请帮助我们在这些步骤后做些什么.
Dha*_*ang 12
我建议不要像你那样更改WordPress核心文件,user.php因为一旦WordPress核心升级它将被覆盖.相反,我建议您阅读以下文章:
它在视频演示中也有解释.
我正在添加以下摘要:
WordPress在很大程度上依赖于它的内置用户系统.因此,WordPress数据库中的用户有很多引用.虽然有点烦人,但解决这些限制仍然相当简单.
WordPress要求WordPress数据库中存在真实用户(WordPress用户)才能对该用户执行操作.幸运的是,WordPress包含创建,操作和删除用户的功能.因此,当我们构建我们的服务时,我们实际上将采取以下步骤,这应该是相当认证类型不可知的:
| 归档时间: |
|
| 查看次数: |
6505 次 |
| 最近记录: |