You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在AWS Amplify集成的ExpressJS Lambda中获取Cognito用户名

在Amplify集成的Express Lambda中获取Cognito用户名(无需自定义授权器)

前提条件

确保你通过Amplify CLI创建API时,已选择Amazon Cognito User Pool作为授权类型——API Gateway会自动验证请求中的JWT令牌,并将用户信息注入Lambda事件上下文。

实现步骤

借助aws-serverless-express/middleware的eventContext中间件,请求对象req会携带API Gateway的事件数据,Cognito用户信息存储在req.apiGateway.event.requestContext.authorizer.claims中,直接取用即可:

const express = require('express')
const bodyParser = require('body-parser')
const awsServerlessExpressMiddleware = require('aws-serverless-express/middleware')

const app = express()
app.use(bodyParser.json())
app.use(awsServerlessExpressMiddleware.eventContext())

app.get('/project', function (req, res) {
    // 从Cognito授权器的claims中获取用户名
    const cognitoUsername = req.apiGateway.event.requestContext.authorizer.claims['cognito:username'];
    res.json({success: `Welcome ${cognitoUsername}`, url: req.url});
});

// 导出app供AWS Lambda调用
module.exports = app;

额外说明

  • 除了cognito:username,还可从claims中获取其他用户属性,比如email(用户邮箱)、sub(用户唯一标识ID)等;
  • 前端使用Amplify API客户端发起请求时,会自动携带Authorization: Bearer <JWT令牌>,无需手动处理令牌传递。

内容的提问来源于stack exchange,提问作者Orfeas Magoulas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 14:04:53