Graphql:使用新生成的令牌覆盖上下文值以登录另一个用户

时间:2018-10-25 06:44:26

标签: mongodb mongoose graphql apollo apollo-server

我一直在玩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值?

0 个答案:

没有答案