Redux实现心愿单添加时Authorization Token未传至后端问题
问题分析与修复
你的问题出在axios.post的参数顺序错误上。axios.post的正确语法是:
axios.post(url, data, config)
你当前的代码把config作为第二个参数传递,而这个位置原本应该是请求体data。这就导致你的请求头配置没有被正确应用,后端自然无法接收到Token,从而返回「未提供Token」的错误。
修复后的服务代码
修改addWishItem函数中的axios调用,在url之后添加一个空的请求体(如果接口不需要请求体,用null或{}占位即可),再传入config:
const addWishItem = async (id, token) => { const config = { headers: { Authorization: `Bearer ${token}`, }, }; // 第二个参数传空对象作为请求体占位,第三个参数传配置项 const response = await axios.post(`${wishData}/add-wish/${id}`, {}, config); return response.data; };
额外验证(可选)
因为你提到其他功能正常,说明thunkAPI.getState().auth.user.token的取值逻辑是正确的,但如果修复后仍有问题,可以在slice中添加日志确认token是否有效:
export const addToWishlist = createAsyncThunk( "wish/addWishItem", async (id, thunkAPI) => { try { const token = thunkAPI.getState().auth.user.token; console.log("当前获取到的Token:", token); // 确认token是否存在且格式正确 return wishService.addWishItem(id, token); } catch (error) { const message = (error.response && error.response.data && error.response.data.message) || error.message; return thunkAPI.rejectWithValue(message); } } );
内容的提问来源于stack exchange,提问作者Kevin Bandison
相关产品推荐
相关产品推荐

