Nano Hash - криптовалюты, майнинг, программирование

Firebase неожиданно сохраняет анонимную аутентификацию, доступную с onAuthStateChanged

Я использовал анонимную аутентификацию Firebase для приложения React Native, в первую очередь для того, чтобы пользователи могли только читать / записывать свои собственные данные (например, проверка auth && auth.uid в правилах безопасности)

Раньше с Firebase 2.4.2 моя схема аутентификации была следующей:

  1. пользователь подписывается

    firebaseRef.authAnonymously((error, authData) => {
      if (error) {
        // handle error
      } else {
        // store the token on device
        store(authData.token);
      }
    });
    
  2. всякий раз, когда пользователь открывает приложение позже, создайте сеанс с сохраненным токеном

    firebaseRef.authWithCustomToken(storedToken, (error) => {
      if (error) {
        // handle errors
      } else {
        // proceed
      }
    });
    

Похоже, что токен, возвращаемый анонимной аутентификацией в Firebase 2.4.2, будет работать для пользовательской аутентификации.

После обновления до Firebase 3.1 этот поток больше не работает - в частности, попытка создать signInWithCustomToken сеанс с токеном, сгенерированным signInAnonymously, возвращает ошибку auth/invalid-custom-token.

Однако проблема отсутствия постоянного сеанса, похоже, исчезла. Теперь с Firebase 3.1:

  1. пользователь подписывается

    firebase.auth().signInAnonymously().then(user => {
      // store token
      user.getToken().then(token => store(token))
    });
    
  2. всякий раз, когда пользователь открывает приложение позже, сеанс все еще доступен, и этот слушатель вызывается

    firebase.auth().onAuthStateChanged(user => {
      // user is still authenticated
    });
    

Мне непонятно, как это работает, как Firebase сохраняет сеанс?


  • Firebase.auth запоминает пользователя между запусками? 05.12.2016
  • @Cherniv да, учетные данные пользователя хранятся в асинхронном хранилище, как описано ниже в ответе Фрэнка, так что onAuthStateChanged забирает их при перезагрузке 05.12.2016

Ответы:


1

В версии 2.x Firebase JavaScript SDK аутентификация работала на React Native, но информация о сеансе не сохранялась где-либо между запусками. Причина в том, что локальное хранилище (которое Firebase использует для сохранения этой информации в браузере) недоступно в React Native.

В версии 3.0 Firebase JavaScript SDK аутентификация больше не работала в React Native.

Начиная с версии 3.1 Firebase JavaScript SDK аутентификация снова работает в React Native. Детали сеанса сохраняются в асинхронном хранилище React Native.

03.07.2016
  • Понятно, очень круто. Поскольку это анонимная аутентификация (и, следовательно, в сеансе аутентификации ничего нельзя изменить, например, адрес электронной почты или пароль), можем ли мы ожидать, что этот сеанс будет сохраняться бесконечно? 04.07.2016
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..