programing

Firebase 3.x - 토큰/세션 만료

batch 2023. 6. 15. 21:42
반응형

Firebase 3.x - 토큰/세션 만료

토큰이 만료되는 데 얼마나 걸리는지 아는 사람 있나요?이제 콘솔에서 토큰 유효성을 설정하는 옵션이 없습니다.

2016년 5월 이후 Firebase 인증 로그인 세션이 더 이상 만료되지 않습니다.대신 오래 지속되는 계정 토큰과 짧은 기간의 자동 새로 고침 액세스를 함께 사용합니다.두 가지 장점을 모두 활용할 수 있는 ID 토큰입니다.

사용자 세션을 종료하려면 전화를 걸 수 있습니다.

만료됩니다.로그인한 후 1시간이 지나면 토큰 ID가 만료됩니다.sdk를 확인하려고 하면 "Error:Firebase ID 토큰이 만료되었습니다.클라이언트 앱에서 새 토큰을 가져온 후 다시 시도하십시오.ID 토큰을 검색하는 방법에 대한 자세한 내용은 https://firebase.google.com/docs/auth/server/verify-id-tokens 를 참조하십시오."

만료 시간을 사용자 지정 토큰이 아닌 Firebase 토큰으로 변경할 수 있는 방법이 있습니까?

이게 진짜 어떻게 작동하는지 아는 사람.

여전히 혼란스러운 사람들을 위해, 이 모든 이 여기에서 매우 자세히 설명되어 있습니다.

앱에 사용자 지정 백엔드 서버가 포함된 경우 ID 토큰을 사용하여 백엔드 서버와 안전하게 통신할 수 있습니다.악의적인 클라이언트가 쉽게 스푸핑할 수 있는 사용자의 원시 ID로 요청을 보내는 대신 Firebase Admin SDK(또는 Firebase에서 선택한 언어로 Admin SDK가 없는 경우 타사 JWT 라이브러리)를 통해 확인할 수 있는 사용자의 ID 토큰을 보냅니다.이를 용이하게 하기 위해 최신 클라이언트 SDK는 현재 로그인한 사용자의 ID 토큰을 검색하는 편리한 방법을 제공합니다.Admin SDK는 ID 토큰이 유효한지 확인하고 디코딩된 토큰을 반환합니다. 여기에는 ID 토큰이 속한 사용자의 UID는 물론 추가된 사용자 지정 클레임도 포함됩니다.

위의 답변이 여전히 당신을 혼란스럽게 한다면, 제가 한 것은 다음과 같습니다.

firebase.auth().onAuthStateChanged(async user => {
    if (user) {
        const lastSignInTime = new Date(user.metadata.lastSignInTime);
        const lastSignInTimeTimeStamp = Math.round(lastSignInTime.getTime() / 1000);
        const yesterdayTimeStamp = Math.round(new Date().getTime() / 1000) - (24 * 3600);
        if(lastSignInTimeTimeStamp < yesterdayTimeStamp){
          await firebase.auth().signOut()
          this.setState({
            loggedIn: false
          });
          return false;
        }
        this.setState({
          loggedIn: true,
          user
        });
      }
    })

언급URL : https://stackoverflow.com/questions/37487283/firebase-3-x-token-session-expiration

반응형