Мы используем Firebase для аутентификации наших пользователей.
Я могу войти в систему на клиентской стороне, а затем запустить из приложения python следующее:
import firebase_admin
import firebase_admin.auth
from firebase_admin import credentials
from datetime import datetime
cred = credentials.Certificate('my_creds.json')
app = firebase_admin.initialize_app(cred)
firebase_admin.auth.revoke_refresh_tokens('some-user-id', app=app)
u = firebase_admin.auth.get_user('some-user-id')
print(datetime.fromtimestamp(u.tokens_valid_after_timestamp / 1000))
Который отображает текущую временную метку, и, по крайней мере, насколько я понимаю, документация по управлению сеансами пользователя , он должен отзывать токены. Что, как я думал , должно быть сделано, чтобы дальнейшие операции, которые я выполняю на стороне клиента, потерпели неудачу.
Это, однако, не соответствует действительности. Я могу открыть консоль, где 'some-user-id'
был зарегистрирован и запустить:
firebase.database().ref('some/key').once('value').then(function(snap){ console.log(snap.val()); });
И через мгновение я буду наблюдать значение some/key
очень хорошо.
Это не хорошо.
Когда я запускаю firebase.auth().currentUser.reload()
, тогда фактически отключает мой сеанс, и я больше не смогу получить это значение. Но я хочу сделать что-то на стороне сервера, чтобы каждый последующий запрос от клиента потерпел неудачу с проблемой аутентификации.
Возможно ли это? И если да, то как я могу это сделать?