В каждом запросе я отправляю токен и проверяю его в промежуточном ПО Express.
app.use(async (req, res, next) => {
const authorization = req.headers.authorization;
let token = null;
let user;
if (authorization) {
try {
token = jwt.verify(authorization, config.secret);
} catch (e) {
// dont work
throw new GraphQLError({ message: 'token damaged' });
}
if (token) {
const { _id } = token;
user = await User.findOne({ _id });
}
if (user) {
req.user = user;
}
}
next();
});
Токен может быть поврежден, и я делаю проверку:
try {
token = jwt.verify(authorization, config.secret);
} catch (e) {
throw new GraphQLError({ message: 'token damaged' });
}
Итак, мне нужно отправить клиентскому приложению Express Error, но это не работает, как ожидалось, есть ли какие-либо варианты для создания промежуточного программного обеспечения graphql, которое принимает аргументы запроса перед вызовом каждого распознавателя? Теперь, если я хочу выдать ошибку поврежденного токена, мне нужно написать проверку в каждом распознавателе?