Auth.signOut 按预期退出

Auth.signOut dosent sign out as expected

我正在使用 AWS Amplify 和 React 构建我的第一个应用程序,我正在使用 withAuthenticator 强制用户登录。当我点击注销按钮时,它会重定向回登录页面,但如果我刷新页面,它重新登录并再次显示我的应用程序,显然,这没有用,因为我需要它来将用户完全退出我的应用程序并从浏览器中删除他们的所有数据。我究竟做错了什么?我什至制作了一个按钮来触发 Auth.signOut() 但我仍然遇到无法从我的应用程序注销的相同问题。

我什至在这里使用了全局注销,但当我刷新页面时它仍然在重新登录。 https://docs.amplify.aws/lib/auth/emailpassword/q/platform/js#sign-out

我的代码:

import React from 'react';
import logo from './SE_logo.jpg';
import './App.css';
import Amplify, { API, Auth } from 'aws-amplify';
import {withAuthenticator} from 'aws-amplify-react';
import '@aws-amplify/ui/dist/style.css';

async function onSignOutClick() {
  //await Auth.signOut()
  //    .then(data => console.log(data))
  //    .catch(err => console.log(err));
  console.log(Auth.signOut());
 }

function App() {
  return (
    <div className="App">
      <header className="App-header">
        <img src={logo} className="App-logo" alt="logo" />
        <button onClick={onSignOutClick}>Log Out</button>
      </header>
    </div>
  );
}

export default withAuthenticator(App, true);

您可以尝试在注销后重定向用户,如下所示

async function handleLogout() {
  await Auth.signOut();

  userHasAuthenticated(false);

  history.push("/login");
}

您可以使用本教程设置浏览器历史记录和重定向用户: https://serverless-stack.com/chapters/redirect-on-login-and-logout.html

删除您的本地存储数据/cookies/等 要么 试试这个

async onSignOutClick() {
 await Auth.signOut()
     .then(data => console.log(data))
     .catch(err => console.log(err));
}

我通过从我的 Apmlify.configure 部分中删除以下代码来修复它,但不确定它的作用,但我在 AWS 文档中找到了它,所以我把它留在了我的文档中。我试图删除所有 cookie 和本地存储内容,但它破坏了我的登录,并且一直没有当前用户,所以我发现删除下面的代码是解决这个问题的方法,它也解决了我没有退出的问题?

      cookieStorage: {
      // REQUIRED - Cookie domain (only required if cookieStorage is provided)
          domain: '.mydomain.co.uk',
      // OPTIONAL - Cookie path
          path: '/',
      // OPTIONAL - Cookie expiration in days
          expires: 365,
      // OPTIONAL - Cookie secure flag
      // Either true or false, indicating if the cookie transmission requires a secure protocol (https).
          secure: true
      },

在 angular 你可以这样做....

signOut(){
    console.log('...signing out ....');
    Auth.signOut();
    this.router.navigate(['/login']);
  }