如何使用 Amazon Cognito 注销端点?

问题描述 投票:0回答:2

我在我的应用程序中使用 AWS Cognito。

注销时,我正在调用 注销端点

但是注销后,我仍然可以使用旧的刷新令牌生成 id 令牌。

这意味着我的注销端点不再工作。我将令牌保存在本地存储中,在注销时我手动清除存储。

我的问题是:如何正确使用AWS的注销机制 认知?

logout amazon-cognito
2个回答
0
投票

我不确定你使用的是哪个框架,但我使用的是 Angular。不幸的是,使用 AWS Cognito 的方法有多种,而且文档也不清楚。这是我的身份验证服务的实现(使用 Angular):

- 注 1 - 使用此登录方法时 - 一旦您将用户重定向到注销 URL,本地主机就会自动刷新并且令牌将被删除。

- 注 2 - 您也可以通过调用手动执行此操作: this.userPool.getCurrentUser().signOut()

import { Injectable } from '@angular/core'
import { CognitoUserPool, ICognitoUserPoolData, CognitoUser } from 'amazon-cognito-identity-js'
import { CognitoAuth } from 'amazon-cognito-auth-js'
import { Router } from '@angular/router'

const COGNITO_CONFIGS: ICognitoUserPoolData = {
  UserPoolId: '{INSERT YOUR USER POOL ID}',
  ClientId: '{INSERT YOUR CLIENT ID}',
}

@Injectable()
export class CognitoService {

  userPool: CognitoUserPool
  constructor(
    private router: Router
  ) {
    this.createAuth()
  }

  createAuth(): void {
    // Configuration for Auth instance.
    const  authData = {
      UserPoolId: COGNITO_CONFIGS.UserPoolId,
      ClientId: COGNITO_CONFIGS.ClientId,
      RedirectUriSignIn : '{INSERT YOUR COGNITO REDIRECT URI}',
      RedirectUriSignOut : '{INSERT YOUR COGNITO SIGNOUT URI}',
      AppWebDomain : '{INSERT YOUR AMAZON COGNITO DOMAIN}',
      TokenScopesArray: ['email']
    }

    const  auth: CognitoAuth = new CognitoAuth(authData)
    // Callbacks, you must declare, but can be empty.
    auth.userhandler = {
      onSuccess: function(result) {
      },
      onFailure: function(err) {
      }
    }

    // Provide the url and parseCognitoWebResponse handles parsing it for us.
    const curUrl = window.location.href
    auth.parseCognitoWebResponse(curUrl)
  }

  /**
   * Check's if the user is authenticated - used by the Guard.
   */
  authenticated(): CognitoUser | null {
    this.userPool = new CognitoUserPool(COGNITO_CONFIGS)
    // behind the scene getCurrentUser looks for the user on the local storage.
    return this.userPool.getCurrentUser()
  }

  logout(): void {
    this.router.navigate(['/logout'])
  }

}


0
投票

Angular 应用程序 AWS Cognito 注销

您可以在其中使用 Cognito 域或自定义域。

认知域 https://myCognito.auth.REGION.amazoncognito.com/logout...

我的自定义 Cognito 域 https://mycustomdomain.auth/logout...

<a href="https://mycustomdomain.auth/logout?client_id=myclientid&logout_uri=https%3A%2F%2Fwww.mycustomdomain.com%2Fmylogout">link text</a>
© www.soinside.com 2019 - 2024. All rights reserved.