如何禁用AWS Amplify Vue身份验证器的注册链接? [英] How do I disable the sign up link for the aws amplify vue authenticator?
问题描述
我正在使用aws-amplify-vue
库中的amplify-authenticator
组件来为我的应用启用身份验证.我试图弄清楚如何在前端禁用创建帐户"链接,但似乎在文档或在线内容中找不到任何内容.我见过一些用户通过用CSS隐藏它来禁用它的地方,还有一些用户可以用react库禁用它的地方,但是我还没有找到vue库的特定内容.可能我只是丢失了文档,但是没有人知道如何从vue放大身份验证器中删除注册功能吗?
I'm using the amplify-authenticator
component from the aws-amplify-vue
library to enable authentication for my app. I'm trying to figure out how to disable the "Create Account" link on the front end and I can't seem to find anything in the documentation or online. I've seen a few places where users disabled it by hiding it with css and a few places where users were able to disable it with the react library, but I haven't found anything specific for the vue library. It's possible I'm just missing the documentation, but does anyone know how to remove the sign up functionality from the vue amplify authenticator?
<template>
<v-container>
<amplify-authenticator></amplify-authenticator>
</v-container>
</template>
<script lang="ts">
import { Vue, Component } from "vue-property-decorator";
import { Auth } from "aws-amplify";
import logger from "../logging";
import { components } from "aws-amplify-vue";
import { AmplifyEventBus } from "aws-amplify-vue";
@Component({
components: {
...components
}
})
export default class Login extends Vue {
async created() {
try {
// This function throws an error if no user is logged in
await Auth.currentAuthenticatedUser({ bypassCache: true });
this.$router.push("/instruments");
} catch (e) {
logger.silly("No user currently logged in");
AmplifyEventBus.$on("authState", async info => {
logger.silly("signedIn");
logger.silly(info);
if (info === "signedIn") {
const user = await Auth.currentAuthenticatedUser({
bypassCache: true
});
this.$router.push("/instruments");
} else {
logger.error(`Failed to login`);
alert("Failed to login");
}
});
}
}
}
</script>
<style scoped></style>
更新1
基于@asimpledevice的回答,我尝试了以下操作,但未成功:
Update 1
Based on @asimpledevice's answer I tried the below without success:
<template>
<v-container class="d-flex justify-center align-center">
<amplify-authenticator
:authConfig="authConfiguration"
></amplify-authenticator>
</v-container>
</template>
<script lang="ts">
import { Vue, Component } from "vue-property-decorator";
import { Auth } from "aws-amplify";
import StoreTypes from "../store-types";
import logger from "../logging";
import { components } from "aws-amplify-vue";
import { AmplifyEventBus } from "aws-amplify-vue";
@Component({
components: {
...components
}
})
export default class Login extends Vue {
async mounted() {
try {
// This function throws an error if no user is logged in
await Auth.currentAuthenticatedUser({ bypassCache: true });
this.$router.push("/instruments");
} catch (e) {
const self = this;
AmplifyEventBus.$on("authState", async info => {
if (info === "signedIn") {
this.$store.dispatch(StoreTypes.types.LOAD_CURRENT_USER);
const nextLocation =
self.$route.query.redirect !== null &&
self.$route.query.redirect !== undefined
? (self.$route.query.redirect as string)
: "/instruments";
this.$router.push(nextLocation).catch(err => {});
}
});
}
}
authConfiguration() {
return {
signInConfig: {
isSignUpDisplayed: false
}
};
}
}
</script>
推荐答案
您可以通过"signInConfig"对象隐藏注册"部分.
You can hide the "sign up" section via the "signInConfig" object.
configurationOptions: any = {
signInConfig: {
isSignUpDisplayed: false
}
};
然后您可以将该对象作为道具传递给组件:
You can then pass this object in as a prop to the component:
<amplify-authenticator
:authConfig="configurationOptions"
></amplify-authenticator>
注意: :您必须使config对象成为本地属性.如果它是函数或计算属性,则该配置将不起作用.完整的解决方案如下:
NOTE: You must make the config object a local property. The config will not work if it is a function or computed property. Your full solution would be the following:
<template>
<v-container class="d-flex justify-center align-center">
<amplify-authenticator
:authConfig="configurationOptions"
></amplify-authenticator>
</v-container>
</template>
<script lang="ts">
import { Vue, Component } from "vue-property-decorator";
import { Auth } from "aws-amplify";
import StoreTypes from "../store-types";
import logger from "../logging";
import { components } from "aws-amplify-vue";
import { AmplifyEventBus } from "aws-amplify-vue";
@Component({
components: {
...components
}
})
export default class Login extends Vue {
configurationOptions: any = {
signInConfig: {
isSignUpDisplayed: false
}
};
async mounted() {
try {
// This function throws an error if no user is logged in
await Auth.currentAuthenticatedUser({ bypassCache: true });
this.$router.push("/instruments");
} catch (e) {
const self = this;
AmplifyEventBus.$on("authState", async info => {
if (info === "signedIn") {
this.$store.dispatch(StoreTypes.types.LOAD_CURRENT_USER);
const nextLocation =
self.$route.query.redirect !== null &&
self.$route.query.redirect !== undefined
? (self.$route.query.redirect as string)
: "/instruments";
this.$router.push(nextLocation).catch(err => {});
}
});
}
}
}
</script>
<style></style>
这篇关于如何禁用AWS Amplify Vue身份验证器的注册链接?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!