如何使用 Amazon Cognito 注销端点?

2023-12-25

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

在注销时我正在打电话注销端点 https://docs.aws.amazon.com/cognito/latest/developerguide/logout-endpoint.html.

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

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

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


我不确定你使用的是哪个框架,但我使用的是 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'])
  }

}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Amazon Cognito 注销端点? 的相关文章

随机推荐

  • 为什么我收到错误的 requestCode?

    我有一个活动 我在其中使用startActivityForResult intent 634 如果我从活动中使用它 则 requestCode 在onActivityResult 可以 但如果我使用startActivityForResul
  • 制作 ListAdapter 可回收的可调整大小的视图

    我正在努力创建一个具有展开和压缩状态的自定义视图 在压缩状态下 它将仅显示一个标签和一个图标 在展开状态下 它将在其下方显示一条消息 这是迄今为止它的工作原理的屏幕截图 The View一旦测量 它本身就会保留压缩状态和扩展状态的大小值 因
  • 创建“简单”密码验证字段

    我正在尝试为网页创建密码字段 到目前为止我有
  • 如何获得mysql存储过程递归的深度?

    我有一个递归mysql 存储过程我为此设置了max sp recursion depth 10 Now 不设置局部变量 我想知道单次执行期间递归的级别是多少 我认为肯定有一个会话变量来存储深度 否则你怎么知道当你达到最大级别时 但我找不到它
  • sql事务不回滚

    在transact sql中 在 开始事务 和 提交事务 之间封装不同操作的目的是什么 我注意到 当函数中间抛出异常时 它不会回滚事务 如果发生错误 如何回滚事务 使用 try 和 catch 进行正确错误处理的最佳方法 然后根据错误在 c
  • Laravel:方法[显示]不存在

    当尝试访问此 URL users login 时 我收到该错误 这是我的代码 查看 users login blade php Sign in HTML ul errors gt all
  • 如何在 if 条件下禁用按钮

    如果 prod quantity 0 如何禁用按钮 这是当 prod qty 0 时我需要禁用的按钮
  • C#中实时数据值显示

    简单的 C 问题 我试图设计一个简单的 C DLL 它使用 用于从数码相机流式传输图像的第三方库 这里是真正的 C 程序员初学者 所以请耐心听我回答这个问题 我在代码中添加了一个计数器 以便每当检索图像时 计数器增加 我构建了一个毫无意义且
  • 无法在 Arch 中安装 virtualbox

    我尝试使用 pacman 在 Arch 4 7 0 1 上安装 Virtualbox 一切似乎都很顺利 直到我尝试运行它 我收到以下消息 警告 未加载 vboxdrv 内核模块 要么就是没有模块 适用于当前内核 4 7 0 1 ARCH 或
  • Double 的 BigDecimal 值不正确?

    我正在尝试从字符串创建 BigDecimal 别问我为什么 我就是需要 这是我的代码 Double theDouble new Double 3 System out println The Double theDouble toStrin
  • 如何从Python函数登录Google Cloud Storage?

    我是谷歌云存储的新手 我尝试设置一个每天下载一次 blob 的功能 目前我正在 Jupyter Notebook 中工作 但最终代码将在 Azure Function 中运行 我正在努力设置将我连接到存储桶的客户端 我有一个服务帐户凭证 J
  • 如何暂停、恢复和停止 Sikuli 程序?

    假设我正在运行一个 Sikuli 程序 并且我想在特定点暂停该程序 然后在一段时间后我想从暂停的点恢复程序 而不影响进程 然后我想停止该进程并退出 我停下来直到它应该被保存的那一点 西库里可以吗 如果是 那么如何 Press Alt Shi
  • jqGrid - 如何使分页按钮更大?

    我正在使用 jqGrid 开发触摸屏应用程序 我需要更大的按钮 我一直在环顾四周 但我不知道分页 搜索 刷新按钮的 CSS 设置在哪里 所以我可以调整它们的大小 如何让按钮变大 Edit 我必须做更多的改变才能让按钮看起来恰到好处 ui j
  • 创建表查询时 MySQL 语法错误?

    它会导致mysql出错 create table book copies bookid references book bookid on delete set null programme id references library br
  • 使用 volley 发送原始帖子请求

    我想使用原始字符串发送发布请求 而不是使用齐射设置参数 我尝试重写 StringRequest 中的 getBody 方法 如下所示 Override public byte getBody throws AuthFailureError
  • 将对象的属性转换为逗号分隔的列表?

    我有一个这样的对象 var person name John surname Smith phone 253 689 4555 I want John Smith 253 689 4555 有什么简单的方法吗 如果可以的话请提供我还可以定义
  • 将 ICollection 转换为 List

    我正在尝试使用下面的代码将 ICollection 转换为 List ICollection
  • 如何将 Enter 键绑定到 Tkinter 中的按钮

    我有一个按钮 button3 Button app text Show Members width 15 command lambda showLDAPMembers yourName yourPassword 如何将 ENTER 键绑定到
  • 如何使用 VBScript (VBS) 显示消息而不导致错误?

    如何在 VBScript 中显示消息 这会导致错误消息 X MsgBox Something Happy Fools 0 16 Ha 该消息只是一个错误消息 我该如何修复它 那里有很多 msgbox 类型 以下是一些链接 1 VBA消息框
  • 如何使用 Amazon Cognito 注销端点?

    我在我的应用程序中使用 AWS Cognito 在注销时我正在打电话注销端点 https docs aws amazon com cognito latest developerguide logout endpoint html 但注销后