RefreshToken 적용시켜 보기
_app.js
useEffect(() => {
if (localStorage.getItem("refreshToken")) getAccessToken(setAccessToken);
}, []);
const errorLink = onError(({ graphQLErrors, operation, forward }) => {
if (graphQLErrors) {
for (const err of graphQLErrors) {
if (err.extensions?.code === "UNAUTHENTICATED") {
operation.setContext({
headers: {
...operation.getContext().headers,
authorization: `Bearer ${getAccessToken(setAccessToken)}`,
},
});
return forward(operation);
}
}
}
});
const client = new ApolloClient({
link: ApolloLink.from([errorLink, uploadLink]),
cache: new InMemoryCache(),
});
login.tsx
...
export default function LoginPage() {
...
async function onClickLogin() {
const result = await loginUser({
variables: {
email: myEmail,
password: myPassword,
},
});
localStorage.setItem("refreshToken", "true");
setAccessToken(result.data?.loginUserExample.accessToken);
router.push("/32-02-login-success");
}
...
return (
<>
이메일 : <input type="text" onChange={onChangeEmail} />
<br />
비밀번호 : <input type="password" onChange={onChangePassword} />
<br />
<button onClick={onClickLogin}>로그인하기</button>
</>
);
}