调用API进行鉴权/用户登录

时间:2018-09-01 作者:ellen

我对wordpress比较陌生,现在正在一个定制的网站上工作。

我有一个API端点,我想调用它来进行身份验证,因为我们的用户将由另一个应用程序存储/验证他们的凭据。

对于上下文,API调用如下所示:

$parameters = array(\'email\' => \'email@exampleemail.com\', \'password\' => \'examplepassword\');

    $url = \'https://example.com/api/auth?key=123APIkey\' ;
    $data = wp_remote_post($url, array(
        \'headers\'     => array(\'Content-Type\' => \'application/json; charset=utf-8\'),
        \'body\'        => json_encode($parameters),
        \'method\'      => \'POST\',
        \'data_format\' => \'body\',
    ));
以下是可能返回的$数据对象的两个示例:

{
"response":200,

"data":{ 
  "email":"sample@someemail.com",
  "first_name":"Jane",
  "last_name":"Doe", 
 } 
}
或者如果登录失败:

{
  "response": 401,
  "message": "Unauthorized - Invalid credentials"
}
现在,我已经把这段代码wp-includes/pluggable.phpwp_authenticate($username, $password) 作用但我似乎什么都做不到。如何正确覆盖身份验证功能?

感谢您的帮助,如果需要,请随时询问更多信息!

非常感谢。

1 个回复
最合适的回答,由SO网友:Farsad 整理而成

最好不要这样做。我完全反对仅仅因为WordPress而覆盖默认的身份验证机制,它的插件通常依赖于网站的数据库。

但是如果你真的遇到这种情况,WordPress会提供一个过滤器,名为authenticate:

add_filter( \'authenticate\', \'wpse75679_auth\', 30, 3 );
function wpse75679_auth( $user, $username, $password ) {
    return $user;
}
只需确保返回的是WP_User 身份验证完成后。

结束

相关推荐

REST API基本身份验证不起作用

我已经设置了一个用于快速测试站点的基本身份验证。$headers = array ( \'Authorization\' => \'Basic \' . base64_encode( \'admin\' . \':\' . \'Str0nGP@$$w0rd\' ), ); $url = rest_url( \'wp/v2/posts/1\' ); $data = array( \'title\' => \'Hello Gaia\