WordPress 的 REST API 是一个强大的工具,可以通过 HTTP 请求与网站进行交互。然而,有时候你可能希望限制 API 的访问,特别是对未登录的用户,以提高安全性或保护隐私。

如何禁止未登录用户访问 REST API?

默认情况下,WordPress 允许某些 REST API 的端点被公开访问。要限制这些访问,可以使用 rest_authentication_errors 过滤器。以下代码会阻止未登录用户的 REST API 请求,并返回自定义错误信息。

add_filter(‘rest_authentication_errors’, function($result) {
if (!empty($result)) {
return $result;
}
if (!is_user_logged_in()) {
return new WP_Error(‘rest_not_logged_in’, ‘您必须登录才能访问 REST API。’, array(‘status’ => 401));
}
return $result;
});

这段代码的作用

  1. rest_authentication_errors 过滤器:此过滤器用于处理 REST API 的身份验证错误。
  2. 检查已有错误:如果 $result 已包含错误,则直接返回。
  3. 验证用户会话:如果用户未登录(!is_user_logged_in()),则返回一个 WP_Error,包含自定义消息和 HTTP 状态代码 401(未授权)。
  4. 返回结果:如果不满足上述条件,则继续处理正常的请求。

结果

通过这段代码,未登录用户在访问 REST API 时将收到提示信息,要求登录后才能继续操作。这样可以有效保护 REST API 不被未经授权的用户访问。