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

如何在Cognito内置登录页显示username以外的内容?

搞定AWS Cognito托管登录页显示内部Username的问题

首先得给你吃个定心丸:你的Cognito用法完全没问题,甚至刚好贴合AWS的最佳实践!当应用不需要用户自定义用户名时,后台生成唯一的username当内部标识符,用邮箱/手机号做登录别名,这正是AWS官方推荐的玩法。

回到你头疼的托管登录页(Hosted UI)显示内部username的问题,这里有几个实用的解决思路:

1. 自定义登录&用户管理UI(最彻底的方案)

AWS的托管UI确实有点“死板”,自定义能力仅限CSS、Logo和少量文本,要是想完全掌控用户看到的内容,最直接的办法就是自己写前端登录和用户信息页面:

  • 先在Cognito用户池的App客户端设置里开启别名登录,把email或preferred_username设为允许的登录别名;
  • 前端登录时,让用户输邮箱(或者你想展示的用户标识),调用Cognito的initiateAuth API时,把用户输的邮箱传给USERNAME参数就行——别担心,别名登录允许用邮箱/手机号替代真正的username;
  • 用户登录成功后,从返回的ID Token里或者调用getUser API拿到preferred_username或email,在你的页面上展示这些字段,彻底避开那个内部的username。

这个方案的好处是完全自主可控,能完美匹配你的需求,唯一的小代价是要多写点前端代码,但用AWS Amplify这类工具的话,开发起来会轻松很多。

2. 给托管UI打个“补丁”(折中方案)

要是暂时不想折腾自定义UI,试试这几个小技巧改善用户体验:

  • 换个登录输入框的提示方式:虽然托管UI不能直接改“Username”这个标签,但你可以用自定义CSS把默认标签隐藏,然后在输入框上方加个自定义提示(比如“请输入你的邮箱”);
  • 统一用户展示字段:在用户创建的时候,用Pre Sign-up或者Post Confirmation Lambda触发器,把preferred_username设成用户的邮箱(或者用户提供的昵称)——这样就算托管UI偶尔显示preferred_username,用户看到的也是熟悉的内容;
  • 绕开托管UI的账户页:如果用户只需要登录,不需要在托管UI里看账户信息,登录成功后直接跳转到你的应用页面就行,别让用户进到托管UI的账户展示环节。

3. 检查下用户池配置有没有漏项

确认你的用户池是不是正确开了别名登录:

  • 进Cognito用户池 → 登录体验 → 登录标识符,选“邮箱地址或手机号码”(或者包含你想用来登录的字段);
  • 在App客户端的身份验证流程设置里,确保“允许使用用户名或别名登录”已经开启。

这么配置后,用户能用邮箱登录,虽然托管UI的输入框标签还是“Username”,但用户输邮箱就能登,多少能减少点困惑。

总的来说,要是对界面显示要求严,自定义UI肯定是最优解;想快速搞定就试试折中方案。你的Cognito用法真的没毛病,不用怀疑自己~

内容的提问来源于stack exchange,提问作者Yves M.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 10:00:25