Open JangAyeon opened 2 years ago
checked="checked"
를 속성에 넣었는데 클릭시 체크 해체가 안됨...ㅠ토급 발급 후 localstorage 저장
if(res.token){
localStorage.setItem("test-token", res.token)
}else{
window.alert(res.msg)
}
로그인 성공 시 main으로 redirect
Link
가 아닌 Redirect
사용
import { Link,Redirect } from "react-router-dom";
login 최초 상태 정의
로그인 페이지에 들어온 사람은 당연히 로그인을 하지 않은 상태임으로 login
을 false
로 상태 정의
const [login,setlogin]=useState(false);
로그인 POST 요청에 따른 login 상태 정의
로그인 POST API 요청에 200 response을 받고 정상적으로 토큰이 발급된 경우 login
을 true
로 상태 정의
이 외 다른 에러 반응에는 최초의 login
상태의 false
와 동일함으로 별도의 setState
를 하지 않음
//POST login 시도
const response = await axios.post("https://fakestoreapi.com/auth/login", {
username: Id,
password: Pwd,
});
//POST 응답 성공
console.log("✔ login token", response.data.token);
//token 발급
const token = response.data.token;
//token 발급된 것 localstorage 저장
if (token) {
localStorage.setItem("JWT token", token);
setlogin(true); // ‼로그인 POST 요청 성공 & 정상적 token 발급으로 true로 상태 정의‼
} else {
window.alert("login server Error!!!");
}
} catch (error) {
//응답 실패
console.log("✔ login error : ", error);
}
login
상태에 따른 redirect
실시
login
이 true
로 로그인이 정상적으로 처리된 경우 redirect
를 사용해 메인 페이지로 이동하도록 함
<button className="login_btn" onClick={onLogin}>
로그인
{login && <Redirect to="/"/>}
</button>
setting
frame
mark up
CSS