如何在Amplify Gen 2 Cognito资源中禁用「创建账户」功能?
禁用Amplify Gen 2登录组件的「创建账户」模块
可以通过前端组件配置+后端权限限制的方式实现,具体操作如下:
前端隐藏「创建账户」入口
以React为例,在渲染<Authenticator>组件时,直接设置hideSignUp属性为true,即可隐藏登录界面的注册按钮:import { Authenticator } from '@aws-amplify/ui-react'; import '@aws-amplify/ui-react/styles.css'; export default function App() { return ( <Authenticator hideSignUp={true}> {({ signOut, user }) => ( <main> <h1>Hello {user?.username}</h1> <button onClick={signOut}>Sign out</button> </main> )} </Authenticator> ); }若使用Vue框架,只需在
<amplify-authenticator>组件上添加hide-sign-up属性即可。后端禁用自助注册权限
仅隐藏前端按钮不够,需在后端配置中彻底关闭自助注册,防止用户通过API绕过前端限制。在amplify/auth/resource.ts文件中修改认证资源配置:import { defineAuth } from '@aws-amplify/backend'; export const auth = defineAuth({ loginWith: { email: true, }, allowGuestAccess: false, userPoolDefaults: { adminCreateUserConfig: { allowAdminCreateUserOnly: true, // 仅允许管理员创建账户 inviteMessageTemplate: { email: { subject: '你的账户已创建', message: '你的用户名是{username},临时密码是{####}', }, }, }, }, });配置完成后执行
amplify push部署后端,此时只有AWS控制台或Admin SDK能创建用户,前端和公开API都无法发起注册请求。验证效果
部署完成后,前端登录界面将不再显示「创建账户」选项,同时后端会拒绝所有自助注册的请求,确保账户只能由管理员手动创建。
内容的提问来源于stack exchange,提问作者Setjmp
相关产品推荐
相关产品推荐

