inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

Vue.js 끝장내기 - 실무에 필요한 모든 것

액시오스 인터셉터 모듈화 및 인스턴스에 연결하는 방법

authorization인 빈값으로 출력됩니다.

해결된 질문

589

linux-s

작성한 질문수 14

1

질문입니다.

결론부터 말씀드리면 로그인 한 후에 network 텝에서 보면 request header의 authorization에 토큰 값이 안들어오고 빈 값으로 "" 확인이 됩니다.

콘솔로 찍어 봤을 때도 마찬가지로 

interceptors.js 파일 안에 config가 먼저 출력이 되고 

export function setInterceptors(instance) {
// Add a request interceptor
instance.interceptors.request.use(
function(config) {
// Do something before request is sent
console.log(config);
config.headers.Authorization = store.state.token;
return config;
},
function(error) {
// Do something with request error
return Promise.reject(error);
},
);

 그 다음 LoginForm.vue에서  console.log(data.token)이 출력이 됩니다. 이를 통해 예상 되는 것은 request.headers의 authorization 안에 토큰 값이 담기기 전에 출력이 되는 것으로 보입니다. 코드의 문제점이 어디에서 잘못된 걸 까요???  

store의 store.state.token은 원래 빈 값인데 setToken 함수를 LoginForm.vue에서 submitForm 버튼을 눌러서 setToken을 commit으로 호출해서 store.state.token에 토큰 값이 담겨져 있어서 이거를 interceptors에서 import로 부른 다음 store.state.token을 가져올 꺼라고 생각했는데 토큰 값이 state에 실리기 전에 interceptor가 실행된 것 같습니다... 맞을까요?? 

},
methods: {
async submitForm() {
try {
// 비즈니스 로직
const userData = {
username: this.username,
password: this.password,
};
const { data } = await loginUser(userData);
console.log(data.token);
this.$store.commit('setToken', data.token);
this.$store.commit('setUsername', data.user.username);
this.$router.push('/main');
} catch (error) {
// 에러 핸들링할 코드
console.log(error.response.data);
this.logMessage = error.response.data;
} finally {
this.initForm();
}
},
console.log(data.token);

javascript vuex vuejs

답변 1

0

캡틴판교

안녕하세요 my-way님, 어제만 이거 관련되서 유사한 질문이 2개 정도 들어왔었는데 아무래도 제가 해당 강의에 노트를 좀 적어놔야 할 것 같습니다 :) 일단 분석을 잘하신 것 같아요.

제가 강좌에서 인터셉터를 소개하고 구성한 이유는 로그인 이후의 API에 대해서 자동으로 토큰을 헤더에 실기 위해서입니다. 다만, 이 인터셉터를 안내하는 시점과 실제 로그인 이후의 API를 다루는 시점이 안맞아 뭔가 혼란스러우실 것 같아요. 후반부로 갈수록 해당 내용에 대해서 더 자세히 다루고 있습니다. 아래 질문 내용들도 한번 참고해보시구요. 혹시 들으시다가 이해 안되는 것 있으면 알려주세요 :)

https://www.inflearn.com/questions/26355

node 10버전 사용

0

64

1

강의에 대해 질문 드립니다.

0

61

1

vue CLI 대신 vite를 사용해도

1

140

2

질문삭제

0

149

2

강사님 코드로 진행할 경우 console.log( config); 도 안찍혔어요. instance 를 생성해서 공통으로 사용하셨는데 loginUser 에만 커스텀한 instance를 넣으니 콘솔에 컨피그 객체가 찍혀요

0

92

1

로그인 에러발생만하면 네트워크 커넥션 에러 발생 해결

0

117

1

rndrmagkqslek.

0

73

1

계속 따라하다가 안돼서 bash에 연결할떄 안되더라구요

0

104

1

axios 에러가 뜹니다.

1

237

2

vue3로 진행하시면서 router에서 '*' 적용이 안되시는 분들

2

312

1

vue 관련 다른 강의 출시예정이없으신지 궁금합니다!

1

154

1

AppHeader.vue에 vue 디폴트 만들에 Delete `␍` 오류나면

1

195

1

vue3로 따라오시다가 import axios 에러 뜨시는 분들

2

445

2

$router 를 이용한 메인 페이지로 이동

1

290

1

혹시 node.js 10.24 버전으로 해도 상관없나요?

2

461

2

에러 경로가 LoginForm.vue 43번째줄 말고 다른 경로로 출력됩니다.

1

299

2

pinia 사용할려고 하는데 에러가 나옵니다.

1

486

2

swagger ui의 post/posts에 글 기록하려고 하면 unauthorized 에러가 납니다..

1

1104

2

safari 개발자 도구에 대한 질문입니다

1

568

2

스웨거에 글 등록시 401 에러가 나와요 ㅠ

1

722

2

이 에러 때문에 진행이 안되네요 ㅠ

1

675

1

windows .nvmrc nvm use 실행 오류

1

1547

2

강사님 최신화가 필요해보입니다.

2

960

2

npm i 에러

1

613

1