context란?
apollo server의 resolver에서 전역적으로 사용가능한 변수
apollo server에 context 추가하기
// 아폴로 서버에 context 추가, req 받아서 header 정보 사용하기
const server = new ApolloServer({
typeDefs,
resolvers,
context: ({ req }) => ({
authScope: req.headers.authorization
})
}));
// resolver에서 context 사용하기 ( 3번째 인자로 전달됨 )
(parent, args, context, info) => {
if(context.authScope !== ADMIN) throw new AuthenticationError('not admin');
// Proceed
}
context 활용하여 유저 권한 설정하기
1. GraphQL 백엔드 단에서 유저 로그인
2. 로그인된 유저정보 암호화 하여, 토큰으로 반환
3. 브라우저의 header에 토큰 저장
4. GraphQL Resolver 접근시, 토큰 복호화하여 유저 정보 확인
5. 유저정보 존재 유무에 따라 다른 함수 작동
반응형