amazon-web-services - AWS Cognito + aws-amplify : session state always keep user logged in?

标签 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();
    });
}

最佳答案

我很确定 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/

相关文章:

amazon-web-services - 如何在travis部署脚本中运行AWS Configure?

graphql - AWS Amplify Transform 能否记录 DynamoDB 中用户创建/更新的日志?

amazon-web-services - 认知 : Federated Identity Id and User Attributes

amazon-web-services - dask S3读取缓存磁盘/RAM上的数据吗?

javascript - AWS Cognito 在 Web View 中保留经过身份验证的 session

amazon-web-services - 将 Google Login 与 Cognito 和 API Gateway 集成

reactjs - AWS Amplify 上未部署公共(public)目录

javascript - Electron Amplify AppSync "Realtime disabled when in a server-side environment"

laravel - 来自 AWS Codecommit 的克隆存储库

ios - 从未经身份验证切换到经过开发人员身份验证的认知用户 - AWS iOS SDK