2016-07-11 4 views
3

Я использую пользовательские токены в своем приложении и сервере для аутентификации. Старая Firebase имела возможность настроить время истечения сеанса для всех своих токенов, так что, когда истекает срок действия сеанса, клиент должен был запросить новый токен с сервера и тем самым создать цикл регенерации токена каждый раз.Недействительность сессии Firebase

Я хотел был бы иметь такую ​​же функциональность с новой системой Firebase auth.

В коде documentation указано, что параметр срока действия токена предназначен только для самого токена и что пользователь остается подписанным до тех пор, пока он не выйдет из строя или сеанс недействителен.

  1. Как я могу аннулировать сеанс, чтобы вызвать событие onAuthStateChanged, чтобы я мог запросить у моего сервера новый токен?
  2. Кроме того, когда именно происходит пожар onAuthStateChanged? Я никогда не выполнял этот обратный вызов.

Примечание

Метод getToken в Android SDK имеет возможность принудительно обновить маркер, который генерирует новый маркер и подписывает пользователя автоматически. Хотя это интересный вариант, как именно приложение может генерировать новый токен без участия сервера, находится вне меня: сервер - это тот, у кого есть все необходимые параметры для создания этого токена, включая закрытый ключ, который я получить из файла , который необходим для пользовательских токенов.

EDIT

Попытка для проверки приложения генерируемых маркеров на стороне сервера приводит недопустимые подписи.

ответ

0

как именно может само приложение генерировать новый маркер без сервера быть вовлечены вне меня: сервер является тот, кто имеет все необходимые параметры для генерации этого маркера

То есть Правильные жетоны всегда генерируются на стороне сервера. Но Firebase Auth прозрачно регенерирует/регенерирует токен, поэтому для вас должна быть какая-то дополнительная работа.

Как я могу аннулировать сессию, с тем, чтобы вызвать onAuthStateChanged события, так что я могу задать свой сервер для нового маркеров?

Вы сами чеканите жетоны?

Если так использовать exp претензии на маркере, чтобы определить срок действия, это будет НЕ Активизируйте onAuthStateChanged как пользователь на самом деле не меняется состояние, необходимо аннулировать сеанс вручную и обработать маркер обновления.

От docs: это контролирует только время, когда пользовательский токен истекает.Но после того, как вы подпишете пользователя при использовании signInWithCustomToken(), они будут оставаться включенными в устройство до тех пор, пока их сеанс не будет признан недействительным или пользователь не выйдет из системы.

Ошибка «недопустимой подписи», скорее всего, вызвана missing claim в JWT.

Если вы не чеканить собственную JWT жетоны

Тогда вы не должны делать какие-либо работы в отношении маркера создания и обновления. Firebase будет обрабатывать все в фоновом режиме, вам просто нужно использовать Firebase SDK до validate on your server if the token is valid.

Кроме того, когда именно происходит событие onAuthStateChanged? I никогда не выполнял этот обратный вызов.

Это всего лишь асинхронный обратный вызов, чтобы вы не наделили Firebase Auth, пока он все еще строится. Это будет вызываться, когда изменяется статус входа пользователя (например, вы вызываете loginWithProvider или выходите из системы). Эти изменения обычно инициируются действием пользователя, но обрабатываются асинхронно, чтобы гарантировать, что Firebase полностью настроена для обработки изменения.

+0

Значит, вы говорите, что если я чеканю свои жетоны, мне нужно самому справиться с недействительностью? Хорошо, справедливо, но я все равно хочу отправить токен с каждым из моих вызовов сервера, для проверки и аутентификации. Есть ли способ восстановить токен через Firebase SDK? Я хочу не хранить его в общих предпочтениях или любом другом методе «самостоятельно» – Aralizer

Смежные вопросы