Всегда ли вызов функции useAuth в Firebase вызывает серверную часть?

#firebase-authentication

#firebase-аутентификация

Вопрос:

У меня есть этот код, в котором я создаю учетную запись пользователя с аутентификацией Firebase:

 export default function Account() {
  const [user, loading, error] = useAuthState(getAuth())
  return (
    <Layout>
      <Box sx={{ mt: "3rem" }}>
        <Typography variant="h2">Welcome {user.displayName}!</Typography>
      </Box>
    </Layout>
  )
}

 

Если я включу эту же модель для каждой страницы NextJS, будет ли вызов серверной части Firebase выполняться каждый раз с getAuth() помощью?

Ответ №1:

Это зависит, но по умолчанию getAuth не будет вызывать вашего поставщика удостоверений (IdP), если app экземпляр не предоставлен. Однако это еще не все.

Например, если вы используете getAuth(yourApp).verifyIdTokens(yourToken) , firebase-admin-sdk будет декодировать ваш JWT только на вашем сервере, используя кэшированный криптографический ключ. Если ключ действителен, но на самом деле он был отозван из IdP, обещание все равно возвращает действительный результат. Если вы добавите verifyIdToken(yourToken, true) , то на этом этапе ваш серверный сервер выполнит вызов IdP, чтобы проверить, действителен ли токен в действительности. Если нет, возникает ошибка.

Для получения дополнительной информации вы можете прочитать официальный документ, касающийся этого.