This Vue router setup uses beforeEach to log every navigation. The beforeEnter guard on the dashboard route checks if the user is logged in. If not, it redirects to login.
import { createRouter, createWebHistory } from 'vue-router'
import HomePage from './HomePage.vue'
import LoginPage from './LoginPage.vue'
import DashboardPage from './DashboardPage.vue'
const routes = [
{ path: '/', component: HomePage },
{ path: '/login', component: LoginPage },
{
path: '/dashboard',
component: DashboardPage,
meta: { requiresAuth: true },
beforeEnter: (to, from, next) => {
if (!isUserLoggedIn()) {
next('/login')
} else {
next()
}
}
}
]
const router = createRouter({
history: createWebHistory(),
routes
})
function isUserLoggedIn() {
// Simulate user login status
return false
}
router.beforeEach((to, from, next) => {
console.log(`Navigating from ${from.path} to ${to.path}`)
next()
})
export default router