[英]AWS Cognito + aws-amplify: session state always keep user logged in?
我正在使用 AWS Cognito 和 aws-amplify 来管理用户身份验证。 当我加载我的应用程序时,我调用Auth.currentSession()
似乎总是返回我登录的用户,就好像我没有通过调用Auth.signOut()
明确注销一样。
如果用户选择“保持用户登录”,我对此没有意见,但如果他们不这样做,我将如何确保用户在离开应用程序后注销 go ?
我尝试在我的login()
方法中添加一个事件侦听器,但这没有用,即当我返回应用程序时用户仍然登录:
.
.
.
if (!keepSignedIn) {
window.addEventListener('unload', function(event) {
Auth.signOut();
});
}
我很确定 logout() 方法会创建一个 promise - 它是异步运行的。 因此,在执行 promise 的注销代码之前,页面可能已被销毁。
您可以通过执行console.log(Auth.signOut());
来确认这一点。 . 如果它是 promise,它将记录Promise { <pending> }
没有办法停止页面的卸载,因为如果我们可以的话那会很糟糕。
你需要的是一个同步注销function。幸运的是,你可以清除浏览器本地存储,这是一个同步操作。 (本地存储是 Amplify 存储身份验证令牌的地方。)
if (!keepSignedIn) {
window.addEventListener('unload', function(event) {
localStorage.clear();
});
}
根据您的情况,您可能需要查找并删除单个本地存储项目,而不是全部清除它们。
您可以在 Auth.signOut() 之前清除 Amplify 缓存
import AmplifyCache from '@aws-amplify/cache';
AmplifyCache.clear();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.