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

Next.js调用WordPress REST API获取当前用户遇Axios认证问题

Next.js + WP JWT 认证问题排查

问题背景

我使用JWT Authentication for WP-API插件生成token,将用户凭证提交至/jwt-auth/v1/token接口后,把token存入cookie并执行以下setState操作:

setAuth({ status: 'SIGNED_IN', user: response.data.user_display_name});

随后在受限页面通过getServerSideProps验证用户有效性:

export const authenticateUser = async (ctx) => {
  try {
    const response = await axios.get(`${process.env.NEXT_PUBLIC_API_URL}/wp/v2/users/me`, {}, { 
      headers: { 
        'Authorization': `Bearer ${token}`
      }
    });
    // 如果返回正确信息
    return { status: 'SIGNED_IN', user: response.data.user}
    // 否则
    return { status: 'SIGNED_OUT', user: null}
  }
}

export const getServerSideProps = async context => {
    // 获取用户信息
    const auth = await authenticateUser(context);
    console.log(auth);
    // 若用户未认证,重定向到首页
    if (auth.status === 'SIGNED_OUT') {
        return {
            props: {},
            redirect: { destination: "/" },
        }
    }

    return { props: { user: auth.user } }
}

异常表现

在Postman中使用正确的Bearer token请求接口可正常工作,但在Next.js应用中收到如下响应:

{
  code: 'rest_not_logged_in',
  message: '您当前未登录。',
  data: { status: 401 }
}

我还尝试通过用户ID查询用户:

const response = await axios.get(`${process.env.NEXT_PUBLIC_API_URL}/wp/v2/users/${userId}`, {}, { 
  headers: { 
    'Authorization': `Bearer ${token}`
  }
});

得到的响应为:

{
  code: 'rest_user_cannot_view',
  message: '抱歉,您没有权限查看用户账户列表。',
  data: { status: 401 }
}

排查结果(补充编辑)

经排查,问题源于Axios,改用Fetch API请求即可正常工作。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 11:50:24