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

AWS Cognito托管UI下邮箱注册登录大小写不敏感方案问询

解决AWS Cognito托管UI下邮箱大小写不敏感的问题

嘿,我刚好碰到过一模一样的场景,你用Cognito托管UI没法改前端的话,只需要调整Lambda触发器的逻辑,覆盖注册和登录两个阶段就能搞定这个大小写敏感的问题。你之前的PreSignUp思路是对的,但漏了关键的修改点,我给你捋清楚:

问题出在哪?

你之前的Lambda只修改了event.request.userAttributes.email,但Cognito里用户名(也就是你用的邮箱)是存在event.userName字段里的,这个才是Cognito识别用户的核心标识。你改了邮箱属性但没改用户名,用户池里还是存着原始大小写的邮箱作为用户名,自然登录时会出现大小写不匹配的情况。

步骤1:修改PreSignUp Lambda,强制存储小写的用户名和邮箱

更新你的PreSignUp触发器函数,同时把userName和email都转成小写,还要重置邮箱验证状态(避免验证邮件发去原始邮箱):

'use strict';
console.log('Loading PreSignUp lowercase conversion function');

exports.handler = (event, context, callback) => {
    console.log('Received event:', JSON.stringify(event, null, 2));
    
    // 处理邮箱和用户名(因为邮箱作为用户名)转小写
    if (event.request.userAttributes.email) {
        const lowerEmail = event.request.userAttributes.email.toLowerCase();
        // 修改请求中的邮箱属性
        event.request.userAttributes.email = lowerEmail;
        // 关键:修改用户名(Cognito用这个识别用户)
        event.userName = lowerEmail;
        // 重置邮箱验证状态,确保验证邮件发送到转换后的小写邮箱
        if (event.request.userAttributes.email_verified) {
            event.request.userAttributes.email_verified = 'false';
        }
        console.log('Converted email and username to lowercase:', lowerEmail);
    }

    callback(null, event);
};

步骤2:添加PreAuthentication触发器,处理登录时的大小写转换

注册时存了小写用户名,但用户登录时可能还是会输入大写邮箱,这时候要在登录前把输入的用户名转成小写,让Cognito能匹配到正确的用户。新建一个Lambda函数作为PreAuthentication触发器:

'use strict';
console.log('Loading PreAuthentication lowercase conversion function');

exports.handler = (event, context, callback) => {
    console.log('Received event:', JSON.stringify(event, null, 2));
    
    // 将登录时输入的用户名(邮箱)转小写
    if (event.userName) {
        event.userName = event.userName.toLowerCase();
        console.log('Converted login username to lowercase:', event.userName);
    }

    callback(null, event);
};

把触发器配置到Cognito用户池

  • 打开AWS Cognito控制台,找到你的用户池
  • 切换到触发器标签页
  • 在PreSignUp下拉菜单里选你刚更新的第一个Lambda函数
  • 在PreAuthentication下拉菜单里选第二个Lambda函数
  • 保存配置就大功告成了!

这样一来,不管用户注册或登录时输入什么大小写的邮箱,都会被统一转换成小写处理,完全实现大小写不敏感,而且全程不用碰托管UI的代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:49:51