我有我的react-native代码中的axios.get这个api.get,将auth_token作为参数传递
const auth_token = await AsyncStorage.getItem('access_token');
api.get('/info/getallposts', {
auth_token
})
auth_token不为空
在我的后端,我有这个解码器
let user_id = jwt.decode(req.body.auth_token).id;
req.body.auth_token未定义
它适用于POSTMAN :(
答案 0 :(得分:1)
GET请求没有与之关联的正文。如果要将类似args的主体放入get请求中,则需要使用查询参数在URL中对它们进行编码。
但是,您不想使用auth令牌来做到这一点。取而代之的是,您要将令牌放在http标头中。对于JWT令牌,您可能需要使用Bearer Token标头值。
尝试一下:
const api = require('axios');
// make sure that this code is wrapped in an async function
const auth_token = await AsyncStorage.getItem('access_token');
const posts = await api.get('/info/getallposts', {
headers: {
Authorization: `Bearer ${auth_token}`
}
})
现在,在后端代码中,您将需要在请求对象的标头字段中查找“授权”键。假设您正在使用快递,那么您的路线将如下所示:
app.get('/info/getall/posts', (req, res) => {
const authHeader = req.get('Authorization');
const jwt = authHeader.split(' ')[0];
});
当然,我建议确保在尝试拆分头之前先确保该头存在。...在执行端点处理程序之类的操作之前,可能要使用中间件,但这应该可以帮助您。