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

API调用时Async Storage中Token传递至后端出现Bearer undefined问题

React Native中RTK Query Token传递异常解决方案

核心问题定位

前端能正常获取并打印Token,但后端保护路由收到的Authorization头为Bearer undefined,说明Token未正确传递到请求头中,大概率是参数传递、RTK Query配置或跨域设置导致。

排查与解决步骤

1. 确认updateUser调用时的参数传递正确性

检查组件中调用updateUser mutation的代码,确保token参数正确传入:

// 正确示例
const updateUserMutation = useUpdateUserMutation();
const handleSubmit = () => {
  const { token } = userInfo;
  console.log(token); // 确认此处打印正常
  updateUserMutation({ data: formData, token }); // 确保token参数正确传递
};

如果调用时误传userInfo而非userInfo.token,会直接导致Bearer undefined。

2. 优化RTK Query的baseQuery配置,统一处理Authorization头

避免在每个端点手动设置headers,通过prepareHeaders统一注入Token,减少手动传参的出错概率:

const baseQuery = fetchBaseQuery({
  baseUrl: "http://localhost:8000",
  prepareHeaders: (headers, { getState }) => {
    // 直接从Redux状态中获取userInfo
    const { userInfo } = getState().auth;
    if (userInfo?.token) {
      headers.set('Authorization', `Bearer ${userInfo.token}`);
    }
    return headers;
  },
});

export const apiSlice = createApi({ 
  baseQuery, 
  tagTypes: ["User"], 
  endpoints: (builder) => ({}) 
});

之后修改updateUser端点,无需手动设置headers:

updateUser: builder.mutation({
  query: (data) => ({
    url: `${USERS_URL}/profile`,
    method: "PUT",
    body: data,
  })
});

3. 检查后端CORS配置,允许Authorization头

后端需确保CORS配置明确允许Authorization头跨域,否则浏览器会拦截该头:

// 后端Express示例
const cors = require('cors');
app.use(cors({
  origin: "http://localhost:3000", // 替换为你的前端实际地址
  credentials: true,
  allowedHeaders: ['Content-Type', 'Authorization'] // 明确添加Authorization头
}));

4. 验证实际发送的请求头

使用React Native调试工具或浏览器Network面板,查看请求的Request Headers中Authorization字段是否正确。如果此处显示Bearer undefined,说明前端参数传递有误;如果显示正确但后端仍收不到,需检查后端路由是否正确挂载了protect中间件,或中间件逻辑是否存在疏漏。

5. 确认AsyncStorage存储的userInfo结构

检查登录后存入AsyncStorage的userInfo是否包含正确的token字段:

// 在组件中验证
const userInfo = JSON.parse(await AsyncStorage.getItem('userInfo'));
console.log(userInfo.token); // 确认token存在且格式正确

确保登录接口返回的token完整传递给了setCredentials的payload。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 23:47:44