我正在使用 AWS Cognito 和 aws-amplify 来管理用户身份验证。当我加载我的应用程序时,我调用了 Auth.currentSession()
这似乎总是返回我登录的用户,就好像我没有通过调用 Auth.signOut() 明确注销一样
。
如果用户选择“让用户保持登录状态”,我对此没有意见,但如果他们不选择,我将如何确保用户在离开应用程序后注销?
我尝试在我的 login()
方法中添加一个事件监听器,但这没有用,即当我返回应用程序时用户仍然登录:
.
.
.
if (!keepSignedIn) {
window.addEventListener('unload', function(event) {
Auth.signOut();
});
}
最佳答案
我很确定 logout() 方法创建了一个 promise - 它异步运行。因此,该页面可能在执行 promise 的注销代码之前被销毁。
您可以通过执行 console.log(Auth.signOut());
来确认这一点.如果这是一个 promise ,它将记录 Promise { <pending> }
没有办法停止页面的卸载,因为如果我们可以的话那会很糟糕。
您需要的是同步注销功能。幸运的是,您可以只清除浏览器本地存储,这是一个同步操作。 (本地存储是 Amplify 存储身份验证 token 的地方。)
if (!keepSignedIn) {
window.addEventListener('unload', function(event) {
localStorage.clear();
});
}
根据您的情况,您可能需要查找并删除单个本地存储项目,而不是全部清除它们。
关于amazon-web-services - AWS Cognito + aws-amplify : session state always keep user logged in?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56295727/