Jed*_*Jed 4 amazon-web-services amazon-cognito aws-amplify
我使用 AWS Cognito 和 aws-amplify 来管理用户身份验证。当我加载我的应用程序时,我调用Auth.currentSession()它似乎总是返回我登录的用户,就好像我没有通过调用显式注销一样Auth.signOut()。
如果用户选择“保持用户登录”,我对此表示同意,但如果他们不这样做,我将如何确保用户在离开应用程序后注销?
我尝试在我的方法中添加事件侦听器,login()但这不起作用,即当我返回应用程序时用户仍然登录:
.
.
.
if (!keepSignedIn) {
window.addEventListener('unload', function(event) {
Auth.signOut();
});
}
Run Code Online (Sandbox Code Playgroud)
我很确定 logout() 方法创建了一个承诺 - 它是异步操作的。因此,在执行 Promise 的注销代码之前,该页面可能已被销毁。
您可以通过执行来确认这一点console.log(Auth.signOut());。如果这是一个承诺,它会记录Promise { <pending> }
没有办法停止页面的卸载,因为如果可以的话那就糟糕了。
您需要的是同步注销功能。幸运的是,您只需清除浏览器本地存储即可,这是一个同步操作。(本地存储是 Amplify 存储身份验证令牌的位置。)
if (!keepSignedIn) {
window.addEventListener('unload', function(event) {
localStorage.clear();
});
}
Run Code Online (Sandbox Code Playgroud)
根据您的情况,您可能需要查找并删除单个本地存储项目,而不是全部清除。
| 归档时间: |
|
| 查看次数: |
5454 次 |
| 最近记录: |