有一个SO问题[如何删除登录页面中的注册][1],它解决了CF。如果是 Amplify,CF 模板由
backend-config.json
生成
"auth": {
"usermanager": {
"service": "Cognito",
"serviceType": "managed",
"providerPlugin": "awscloudformation",
}
}
如何配置Amplify模板生成带属性的CF模板?
AdminCreateUserConfig:
AllowAdminCreateUserOnly: True
链接到 Amplify 模板参考将不胜感激。
编辑: Amplify 支持覆盖生成的内容。我跑
amplify override auth
。它生成了文件amplify\backend\auth\myusermanager\override.ts
。我做了一个覆盖:
import { AmplifyAuthCognitoStackTemplate } from '@aws-amplify/cli-extensibility-helper';
export function override(resources: AmplifyAuthCognitoStackTemplate) {
resources.userPool.adminCreateUserConfig = {
allowAdminCreateUserOnly: true,
}
}
生成的 CF 模板看起来不错
"Resources": {
"UserPool": {
"Type": "AWS::Cognito::UserPool",
"Properties": {
"AdminCreateUserConfig": {
"AllowAdminCreateUserOnly": true
},
无论如何,登录页面上都会有登录链接。
当我检查 Cognito 用户池策略时,我发现
Only allow administrators to create users
单选按钮被选中。
编辑
建议的答案与 VUE 有关。我正在使用 React。
"@aws-amplify/ui-react": "^2.1.0"
这可以通过将
hideSignUp
传递给 Authenticator
来实现
return (
<Authenticator hideSignUp>
{({ signOut, user }) => (
<main>
<h1>Hello {user?.username}</h1>
<button onClick={signOut}>Sign out</button>
</main>
)}
</Authenticator>
);