выдается ошибка:
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
в объект заголовка, то есть он не определен. Я не могу понять, почему это не определено. Я посмотрел вокруг и не вижу других с этой проблемой.