我一直在玩JSONWebToken
,并通过访问由登录用户生成的token
并将其传递给context
来成功管理登录用户。然后,我将通过令牌解码的用户ID传递到发布请求中,并将用户ID添加到MongoDB
模型中的字段中。
但是问题是,当我通过从其他用户发出登录请求来生成令牌,然后将其作为header
传递给Authorization
并尝试发出发布请求时,它仍在添加MongoDB
模型中字段的先前用户ID。
下面的代码是我将用户信息传递到context
的方式,目前我正在从Apollo的Graphql游乐场制作所有requests
。
const server = new ApolloServer({
schema,
context: async({req}) => {
try {
if(req.headers.authorization) {
const token = getToken(req.headers.authorization);
const {payload} = jwt.verify(token, 'secret');
if (!payload.tenant)
throw new Error('No Tenant');
const user = await getUser(payload.tenant);
return {user}
}
} catch (err) {
console.log(err)
return {}
}
}
});
如何通过传递新生成的令牌来覆盖context
值?