u_ju
우주의 우당탕탕개발일지
u_ju
전체 방문자
오늘
어제
  • 분류 전체보기 (118)
    • 팀 프로젝트 (2)
    • 내배캠 WIL & TIL (91)
    • JS (0)
    • React (1)
    • CS (23)
    • Next (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 코딩#바보#오류투성이#팀프로젝트
  • 배열#함수
  • 회의감#현타#나름뿌듯#고민거리#코딩#IT#CSS#JS
  • Component를 처음 선언하는 것을 Mount 라고 한다던데...?#props #state
  • 일요일 오늘은 내가 바로 함수만들기 요리사 !

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
u_ju
내배캠 WIL & TIL

TIL) 스파르타 개발일지 23-01-27

TIL) 스파르타 개발일지 23-01-27
내배캠 WIL & TIL

TIL) 스파르타 개발일지 23-01-27

2023. 1. 28. 02:07

firebase에서 세션처리하기.

먼저 파이어베이스에서 제공되는 인증처리의 경우를 알아보자.

파이어베이스에서는 3가지의 인증처리 경우가 있다.

local, session, none

인증 상태를 변경하기 위해서는 파이어베이스에서 제공 되는 setPersistence 라는 메서드를 통해서 변경하면 된다.

아래는 파이어베이스 공식문서의 예문이다.

import { getAuth, setPersistence, signInWithEmailAndPassword, browserSessionPersistence } from "firebase/auth";

const auth = getAuth();
setPersistence(auth, browserSessionPersistence)
  .then(() => {
    // Existing and future Auth states are now persisted in the current
    // session only. Closing the window would clear any existing state even
    // if a user forgets to sign out.
    // ...
    // New sign-in will be persisted with session persistence.
    return signInWithEmailAndPassword(auth, email, password);
  })
  .catch((error) => {
    // Handle Errors here.
    const errorCode = error.code;
    const errorMessage = error.message;
  });

 

Try. 이 코드를 나의 프로젝트에 리펙토링하기.

관련 정보가 많이 없어서 조금 많이 헤매였는데, 생각보다 간단했다.

 

기존 로그인 요청방식은

 

signInWithEmailAndPassword를 호출하여,

로그인한 유저의 이메일과 패스워드를 받아오고 네비게이터로 유저를 메인페이지(/)로 넘겨주었다..

//세션처리 전
signInWithEmailAndPassword(authService, userEmail, userPassword)
.then(() => {
  //       setUserEmail('');
  //       setUserPassword('');
  //       navigate('/');
  //     })
  //     .catch((err) => {
  //       if (err.message.includes('user-not-found')) {
  //         alert('회원이 아닙니다. 회원가입을 먼저 진행해 주세요.');
  //       }
  //       if (err.message.includes('wrong-password')) {
  //         alert('비밀번호가 틀렸습니다.');
  //       }
  //     });
  // };

 

 

변경 후에는 getAuth 함수 호출, 이후 setPersistence를 통해서 세선처리 후

리턴 값으로 signInWithEmailAndPassword를 보내면 된다.

   //세션처리 후
const auth = getAuth();
setPersistence(auth, browserSessionPersistence)
  .then(() => {
    setUserEmail('');
    setUserPassword('');
    navigate('/');
    return signInWithEmailAndPassword(auth, userEmail, userPassword);
  })
  .catch((error) => {
    if (error.message.includes('user-not-found')) {
      alert('회원이 아닙니다. 회원가입을 먼저 진행해 주세요.');
    }
    if (error.message.includes('wrong-password')) {
      alert('비밀번호가 틀렸습니다.');
    }
    console.log('error: ', error);

  });
}

 

"시행 착오는 착오가 아니다." 라는 기억에 남는 멘트가 있었는데, 조금 마음이 뭉클했다. 

'내배캠 WIL & TIL' 카테고리의 다른 글

TIL) 스파르타 개발일지 23-02-03  (0) 2023.02.03
TIL) 스파르타 개발일지 23-01-30  (0) 2023.01.31
TIL) 스파르타 개발일지 23-01-26  (0) 2023.01.27
TIL) 스파르타 개발일지 23-01-25  (0) 2023.01.25
TIL) 스파르타 개발일지 23-01-20  (0) 2023.01.20
  • firebase에서 세션처리하기.
  • Try. 이 코드를 나의 프로젝트에 리펙토링하기.
'내배캠 WIL & TIL' 카테고리의 다른 글
  • TIL) 스파르타 개발일지 23-02-03
  • TIL) 스파르타 개발일지 23-01-30
  • TIL) 스파르타 개발일지 23-01-26
  • TIL) 스파르타 개발일지 23-01-25
u_ju
u_ju

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.