我正在使用WP REST API和oAuth1.0服务器插件进行身份验证。到目前为止,Postman需要进行身份验证以访问端点,但浏览器不需要身份验证。任何人都可以通过浏览器访问API响应。是否可以在浏览器中限制API访问?我不希望未经身份验证的人看到API的敏感数据。
P.S。 oAuth1.0服务器插件已激活,Postman中的身份验证工作完美!
实施例。当我在浏览器中输入http://localhost:8080/api/v1/categories
时,我得到类别的JSON响应,当我在Postman中输入相同的端点时,我得到:
{
"code": "json_oauth1_missing_parameter",
"message": "Missing OAuth parameter oauth_token",
"data": {
"status": 401
}
}
答案 0 :(得分:0)
好的,经过一整天的搜索,我终于找到了两种可能的解决方案。两者都对我很好(亲自选择第一个)。
add_filter('rest_pre_dispatch', function($result){
if (is_user_logged_in()) {
return $result;
} else {
return new WP_Error('rest_requires_authentication', __('Authentication is required for this action.'), array('status' => 403));
}
});
或者
add_filter('rest_authentication_errors', function($result) {
if (!empty($result)) {
return $result;
}
if (!is_user_logged_in()) {
return new WP_Error('restx_logged_out', 'Sorry, you must be logged in to make a request.', array('status' => 401));
}
return $result;
});
令人遗憾的是WP REST API插件本身并没有处理它。