При попытке интегрировать auth0 с apollo, при запуске должен быть указан токен jwt. - PullRequest
0 голосов
/ 22 марта 2020

выдается ошибка:

JsonWebTokenError: jwt must be provided

и она выдается при запуске.

Я понимаю, почему происходит ошибка, потому что нет авторизации маркер. Я не могу понять, как вставить это при запуске, хотя. Код выглядит следующим образом:

app.prepare().then(() => {
    sequelize.sync();
    const client = jwksClient({
        jwksUri: `https://${process.env.AUTH0_DOMAIN}/.well-known/jwks.json`
    });
    function getKey(header, cb){
        client.getSigningKey(header.kid, function(_err , key) {
            let signingKey = key.publicKey || key.rsaPublicKey;
            cb(null, signingKey);
        });
    }
    const options = {
        audience: process.env.AUTH0_CLIENT_ID,
        issuer: `https://${process.env.AUTH0_DOMAIN}/`,
        algorithms: ['RS256']
    };
    const apollo = new ApolloServer({
        typeDefs,
        resolvers,
        context: ({ req }) => {
            // simple auth check on every request
            console.log(req);
            const token = req.headers.authorization;
            const user = new Promise((resolve, reject) => {
                jwt.verify(token, getKey, options, (err, decoded) => {
                    if(err) {
                        return reject(err);
                    }
                    resolve(decoded.email);
                });
            });

            return {
                user
            };
        },
    });
});

Он работал нормально, прежде чем я попытался добавить в context.

В журнале, который вы видите в функции context, нет authorization в объект заголовка, то есть он не определен. Я не могу понять, почему это не определено. Я посмотрел вокруг и не вижу других с этой проблемой.

...