JangAyeon / book_curly

도서 API + 마켓컬리
0 stars 0 forks source link

Login #2

Open JangAyeon opened 2 years ago

JangAyeon commented 2 years ago

setting

JangAyeon commented 2 years ago
JangAyeon commented 2 years ago
JangAyeon commented 2 years ago

토급 발급 후 localstorage 저장

      if(res.token){
              localStorage.setItem("test-token", res.token)
          }else{
              window.alert(res.msg)
          }
JangAyeon commented 2 years ago

로그인 성공 시 main으로 redirect

  1. Link가 아닌 Redirect 사용

    import { Link,Redirect } from "react-router-dom";
  2. login 최초 상태 정의
    로그인 페이지에 들어온 사람은 당연히 로그인을 하지 않은 상태임으로 loginfalse로 상태 정의

    const [login,setlogin]=useState(false);
  3. 로그인 POST 요청에 따른 login 상태 정의
    로그인 POST API 요청에 200 response을 받고 정상적으로 토큰이 발급된 경우 logintrue로 상태 정의 이 외 다른 에러 반응에는 최초의 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);
    }
  4. login 상태에 따른 redirect 실시
    logintrue로 로그인이 정상적으로 처리된 경우 redirect를 사용해 메인 페이지로 이동하도록 함

    <button className="login_btn" onClick={onLogin}>
    로그인
    {login && <Redirect to="/"/>}
    </button>