Estou construindo este pequeno aplicativo com Vue, e não consigo fazer a autenticação funcionar. Para ser exato, o redirecionamento não funciona, recebo os logs verdadeiro e autenticado, mas não estou sendo redirecionado para a página inicial (/ ). Mas quando eu ligo o aplicativo, sou levado instantaneamente para /login, o que é bom e eu quero isso, mas como eu disse, quando tento fazer login, não estou sendo redirecionado
aqui está meu componente de login e meu roteador.
import { createRouter, createWebHistory } from 'vue-router'
import LoginView from '@/views/LoginView.vue'
import AboutView from '../views/AboutView.vue';
import isAuthenticated from '@/views/LoginView.vue';
const router = createRouter({
history: createWebHistory(import.meta.env.BASE_URL),
routes: [
{
path: '/login',
name: 'Login',
component: LoginView
},
{
path: '/',
name: 'Home',
meta: {
requiresAuth: true
},
component: AboutView,
beforeEnter:(to,_,next)=>{
if(to.meta.requiresAuth && !isAuthenticated.value){
next('/login');
}
else{
next();
router.push('/');
}
}
}
]
})
export default router
<template>
<div>
<h2>Enter the access token to login</h2>
<hr />
<div class="col-md-8">
<section id="loginForm">
<form @submit.prevent="checkAccessToken">
<div class="form-group">
<label><b>Access Token</b></label>
<input v-model="accessToken" type="password" class="form-control" />
</div>
<input type="submit" value="Log in" class="btn btn-primary" />
</form>
</section>
</div>
</div>
</template>
<script setup lang="ts">
import { ref} from 'vue'
import router from '@/router/index'
const isAuthenticated = ref(false);
const accessToken = ref('');
const checkAccessToken = () => {
if (accessToken.value === '123') {
isAuthenticated.value = true;
console.log(isAuthenticated.value);
console.log('Authenticated');
router.push('/');
} else {
}
};
</script>
Se apenas o
router.push()
não estiver funcionandoque tal importar vue-router como
E use
router.push('/')