Я создаю приложение Swift с бэкэндом Python и хотел бы использовать AWS Cognoto для аутентификации и регистрации.
В настоящее время я использую следующий код для входа в систему
let user = pool?.getUser(email)
user?.getSession(email, password: password, validationData: nil)
.continueWith { task in
// handle error/success
return nil
}
Пул инициализируется выше, используя self.pool = AWSCognitoIdentityUserPool.default()
вызов.
При запуске приложения я проверяю, аутентифицирован ли пользователь и получает ли он access_token:
if AWSSignInManager.sharedInstance().isLoggedIn {
if let user = pool?.currentUser() {
user.getSession()
.continueWith { task in
token = task.result?.accessToken?.tokenString
return nil
}
}
}
И я передаю этот токен бэкенду. На сервере я получаю данные пользователя через библиотеку Python Warrant:
from warrant import Cognito
u = Cognito("id", "key", user_pool_region="us-east-1")
u.access_token = "token"
res = u.get_user(attr_map={"sub": "user_id", "email": "email"})
Если токен действителен, я получаю данные пользователя, в противном случае возникает исключение. Но после выхода из клиента этот токен все еще жив. Я использую следующий код выхода из системы:
AWSSignInManager.sharedInstance().logout { (result: Any?, error: Error?) in
// handle results
}
Я понимаю, что этот токен истекает через некоторое время и не будет обновляться, так как при следующем входе в систему пользователь получит другую пару токенов accces / refresh, но я хотел бы немедленно аннулировать токен при выходе из системы, не так ли? возможный? Или я не понимаю Cognito и неправильно его использую?