【发布时间】:2018-12-10 18:29:51
【问题描述】:
我正在使用 Python 后端构建 Swift 应用程序,我想使用 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
}
我了解,此令牌将在超时后过期,并且不会刷新,因为下次登录用户将获得另一个加速/刷新令牌对,但我想在注销时立即使令牌无效,是吗可能的?还是我不懂 Cognito 使用不当?
【问题讨论】:
标签: python swift authentication amazon-cognito aws-cognito