Apollo-boost headers Authentication 설정

sagong·2019년 12월 29일
0

react

목록 보기
2/4
import ApolloCient from 'apollo-boost';
import {defaults, resolvers} from "./LocalState";

export default new ApolloCient({
    uri:"http://localhost:4000/",
    clientState:{
        defaults,
        resolvers
    },
    headers: {
        Authorization: `Bearer ${localStorage.getItem("token")}`
    }
});

로그인시 localstorage에 token을 저장 하고, 서버로 요청을 보낼 때 헤더에 토큰을 보내도록 설정 해 놓았다.
하지만 위에처럼 했을 경우 , 로그인시 토큰이 저장되는것 까지는 문제없이 되는데 서버에서 계속 인증이 되지 않는 현상이 생겼다.

import ApolloCient from 'apollo-boost';
import {defaults, resolvers} from "./LocalState";

export default new ApolloCient({
    uri:"http://localhost:4000/",
    clientState:{
        defaults,
        resolvers
    },
    request: async (operation)=>{
        const token = await localStorage.getItem("token");
        operation.setContext({
            headers:{
                authorization: token ? `Bearer ${token}` : ''
            }
        })

    }
});

그래서 이런식으로 async/await 를 활용하여 비동기 처리를 하니 이전 문제가 없어졌다.

profile
안녕하세요

0개의 댓글