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 를 활용하여 비동기 처리를 하니 이전 문제가 없어졌다.