반응형
안녕하세요! 새콤하고달콤입니다.
오늘은 token값 응답 객체에 담기, 라우팅, UI/UX 만들기, 컴포넌트 제작을 진행해보았습니다.
1. token값 응답 객체에 담기
먼저 백엔드에서 넘겨준 header 정보에 token이 담겨있는 줄 알고 기대했었는데 담겨있지 않았습니다.
흠.. 이상하다 생각해서 network 탭에서 확인해보니까 network 탭에서는 잘 찍혀있었습니다.
구글링 결과 서버쪽에서 header를 추가해야되는데 아래의 header를 추가하면 됩니다.
아래의 header는 응답 객체에 옵션을 보여주는 옵션이라고 생각하면 됩니다.
headers.set("token", userService.jwtLogin(jwtLoginDTO.getCode(), jwtLoginDTO.getOauthId()));
headers.set("Access-Control-Expose-Headers", "token");
2. 라우팅
라우팅을 위해서 react-router-dom을 새로 설치하였습니다.
npm install --save-dev react-router-dom @types/react-router/dom
먼저 App 컴포넌트에 라우팅 경로를 설정합니다.
import React, { useState, useEffect } from 'react';
import { BrowserRouter as Router, Switch, Route, Link } from 'react-router-dom';
import LoginPage from '@src/pages/LoginPage';
import PlayGroundPage from '@src/pages/PlayGroundPage';
const App = () => {
return (
<>
<Router>
<Switch>
<Route exact path="/" component={LoginPage} />
<Route exact path="/playground" component={PlayGroundPage} />
</Switch>
</Router>
</>
);
};
export default App;
그리고 useLayoutEffect를 이용해서 렌더링 전에 token을 받고 라우팅 해줍니다.
받은 token은 localStorage에 저장하였습니다.
const history = useHistory();
useLayoutEffect(() => {
const local = location.search;
const params = queryString.parse(local);
const options = {
mode: 'cors',
credentials: 'include',
headers: {
'Content-Type': 'application/json',
'Access-Control-Allow-Origin': '*',
},
};
if (Object.keys(params).length > 0) {
const getToken = async () => {
const v: any = await axios
.post('http://localhost:8080/jwtLogin', params, options)
.then((response) => {
localStorage.setItem('token', response.headers.token);
});
};
getToken();
history.push('/playground');
}
}, []);
반응형
'토이프로젝트 > programmerGround' 카테고리의 다른 글
header 컴포넌트 제작(2020.02.06) (0) | 2021.02.06 |
---|---|
메인페이지 UI 구상(2020.01.28) (0) | 2021.01.28 |
eslint 설정(2021.01.25) (0) | 2021.01.26 |
programmerGround 구상 회의 (0) | 2021.01.24 |
programmerGround 프로젝트 개요 (0) | 2021.01.19 |