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

如何将Cognito用户登录信息与PUT请求参数关联(Cognito+Lambda)

当然可以呀!这在Cognito认证的场景里是非常常见的需求——核心就是把手动传入的owner参数,替换成从Cognito登录会话里提取的合法用户标识,既安全又不用用户手动输入。下面给你一步步拆解怎么实现:

一、前端:从Cognito获取当前登录用户的唯一ID

既然你的React应用已经集成了Cognito认证,那可以直接用AWS Amplify(或者Cognito官方JS SDK)获取当前用户的认证信息。举个用Amplify的例子:

首先写个工具函数获取用户ID:

import { Auth } from 'aws-amplify';

async function getCurrentAuthenticatedUserId() {
  try {
    const user = await Auth.currentAuthenticatedUser();
    // Cognito用户自带的唯一标识是`sub`字段,如果你在用户池里配置了自定义的`product_owner_id`属性,也可以用这个
    return user.attributes.sub;
  } catch (error) {
    console.error('获取登录用户信息失败', error);
    return null;
  }
}

然后修改你的getList方法,用这个函数返回的ID代替硬编码的owner: 2:

async getList() {
  const ownerId = await getCurrentAuthenticatedUserId();
  
  if (!ownerId) {
    // 处理用户未登录的情况,比如跳转到登录页
    return;
  }

  axios.put(proxyurl + url, { "owner": ownerId })
    .then(resp => {
      // 处理返回的数据
    })
    .catch(err => {
      // 处理请求错误
    });
}

⚠️ 这里要注意:前端传的ID存在被篡改的风险,所以后端必须做验证,不能直接信任这个参数!

二、后端Lambda:从认证上下文提取合法用户ID

你的Lambda是通过API Gateway触发的吧?首先要确保API Gateway配置了Cognito授权——这样只有经过Cognito认证的请求才能到达Lambda,同时API Gateway会把Cognito的用户认证信息自动注入到Lambda的event参数里。

在Lambda代码里,你可以从event.requestContext.authorizer.claims中提取经过验证的用户信息:

exports.handler = async (event) => {
  // 从Cognito授权上下文里拿用户唯一ID
  const validOwnerId = event.requestContext.authorizer.claims.sub;
  // 如果你的Cognito用户池配置了自定义属性`custom:product_owner_id`,就用这个:
  // const validOwnerId = event.requestContext.authorizer.claims['custom:product_owner_id'];

  // 这里直接用validOwnerId去RDS执行关联操作,完全忽略前端传的`owner`参数!
  // 这样就彻底避免了前端篡改参数的问题,保证数据的合法性

  // 接下来写你的RDS操作逻辑...
};
三、可选优化:给Cognito用户池添加自定义属性

如果你的业务里product_owner_id和Cognito默认的sub不是同一个值,你可以在Cognito用户池里添加自定义属性(比如custom:product_owner_id),然后在用户注册或者后台更新用户信息时,把对应的业务ID赋值给这个属性。这样在Lambda里就能直接拿到和RDS表字段匹配的ID,不用额外转换。

核心总结
  • 前端负责从Cognito获取用户ID并传递,但后端必须丢弃前端传的参数,改用API Gateway提供的经过验证的Cognito用户信息
  • 这种方式既实现了自动关联用户和传感器,又保证了数据的安全性,避免了恶意用户篡改参数的风险

内容的提问来源于stack exchange,提问作者Jose Guilherme

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:00:53