You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

同域React前端发送AJAX请求如何通过WordPress REST API获取当前登录用户ID?

解决方案

核心原理

同域部署场景下不需要手动传递用户账号密码等凭证,WordPress原生支持基于Cookie + Nonce的REST API认证,浏览器会自动携带当前用户的登录Cookie,你只需要补充WordPress要求的防跨站请求伪造(CSRF)的nonce校验头即可完成认证。

具体实现步骤

  • 第一步:在WordPress后端注入REST API认证所需的nonce到前端全局变量
    你可以在主题的functions.php文件或者自定义功能插件中添加以下代码,将nonce和REST API根地址注入到你的React脚本的全局变量中:

    function inject_wp_rest_auth_config() {
      // 此处替换为你在WordPress中注册React入口JS时填写的句柄名称
      $react_script_handle = 'your-react-app-script';
      wp_localize_script(
        $react_script_handle,
        'wpRestConfig',
        [
          'nonce' => wp_create_nonce('wp_rest'),
          'api_root' => get_rest_url()
        ]
      );
    }
    add_action('wp_enqueue_scripts', 'inject_wp_rest_auth_config');
    
  • 第二步:在React请求中携带nonce请求头
    发起请求时在Header中添加X-WP-Nonce字段,值为注入的全局nonce即可,同域下浏览器会自动携带用户登录Cookie,无需手动处理凭证,以下是fetch请求示例:

    fetch(`${wpRestConfig.api_root}wp/v2/users/me`, {
      headers: {
        'X-WP-Nonce': wpRestConfig.nonce
      },
      credentials: 'same-origin' // 同域场景下默认即为该值,添加后兼容性更好
    })
    .then(res => {
      if (!res.ok) throw new Error('未登录或权限不足');
      return res.json();
    })
    .then(userData => {
      const currentUserId = userData.id;
      // 此处处理拿到的用户ID逻辑
    })
    .catch(err => console.error('请求失败:', err));
    

注意事项

  • /wp/v2/users/me接口只有登录用户可以访问,未登录用户请求会返回401状态码,你可以根据返回状态自行处理未登录场景的逻辑
  • nonce默认24小时过期,WordPress会自动进行有效性校验,无需你手动维护过期逻辑
  • 该方案仅适合同域部署场景,跨域部署不支持Cookie自动携带,需要更换其他认证方式

内容的提问来源于stack exchange,提问作者Anthony Ceponis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 07:09:03