Вы можете добавить currentUser
к объекту request
внутри промежуточного программного обеспечения.Затем вы передаете его скопировать из запроса в контекст GraphQL.Затем вы можете добавить распознаватель currentUser
и просто вернуть пользователя из контекста.
Ваше промежуточное программное обеспечение
app.use(async (req, res, next) => {
const token = req.headers['authorization'];
if(token !== "null") {
try{
req.currentUser = await jwt.verify(token, process.env.SECRET)
} catch {
console.error(err);
}
}
next();
});
Ваш сервер
const app = express();
const server = new ApolloServer({
typeDefs: gql(typeDefs),
resolvers,
context: ({ req }) =>({
currentUser: req.currentUser,
db,
secret: process.env.SECRET,
}),
});
app.use(cors(corsOptions));
server.applyMiddleware({ app });
и распознаватели
const resolvers = {
Query: {
currentUser: (parent, args, context) => context.currentUser,
...
}
}
Добавьте соответствующее определение типа, и вы сможете запросить текущего пользователя у вашего клиента.
Если вам нужна дополнительная информация , вот подробное руководство , котороеможет быть полезным.