当前位置:首页 > VUE

vue路由实现登录

2026-03-08 07:58:51VUE

Vue 路由实现登录功能

在 Vue 项目中,可以通过 Vue Router 实现登录功能,结合路由守卫和权限控制来保护需要认证的页面。

安装 Vue Router

确保项目中已安装 Vue Router。如果没有安装,可以通过以下命令安装:

npm install vue-router

配置路由

router/index.js 中配置基本路由,包括公开路由(如登录页)和需要认证的私有路由。

vue路由实现登录

import Vue from 'vue'
import VueRouter from 'vue-router'
import Login from '../views/Login.vue'
import Dashboard from '../views/Dashboard.vue'

Vue.use(VueRouter)

const routes = [
  {
    path: '/login',
    name: 'Login',
    component: Login
  },
  {
    path: '/dashboard',
    name: 'Dashboard',
    component: Dashboard,
    meta: { requiresAuth: true } // 标记需要认证
  }
]

const router = new VueRouter({
  routes
})

export default router

实现登录逻辑

在登录页面(Login.vue)中,实现用户登录逻辑,通常包括表单提交和认证请求。

<template>
  <div>
    <form @submit.prevent="handleLogin">
      <input v-model="username" placeholder="Username" />
      <input v-model="password" type="password" placeholder="Password" />
      <button type="submit">Login</button>
    </form>
  </div>
</template>

<script>
export default {
  data() {
    return {
      username: '',
      password: ''
    }
  },
  methods: {
    async handleLogin() {
      try {
        // 调用登录 API
        const response = await axios.post('/api/login', {
          username: this.username,
          password: this.password
        })
        // 存储 token
        localStorage.setItem('token', response.data.token)
        // 跳转到受保护的路由
        this.$router.push('/dashboard')
      } catch (error) {
        console.error('Login failed:', error)
      }
    }
  }
}
</script>

路由守卫

使用全局前置守卫 beforeEach 检查用户是否已登录,未登录则重定向到登录页。

vue路由实现登录

router.beforeEach((to, from, next) => {
  const isAuthenticated = localStorage.getItem('token')
  if (to.matched.some(record => record.meta.requiresAuth) && !isAuthenticated) {
    next('/login')
  } else {
    next()
  }
})

登出功能

在需要登出的地方(如导航栏),添加登出逻辑。

methods: {
  handleLogout() {
    localStorage.removeItem('token')
    this.$router.push('/login')
  }
}

动态路由

对于更复杂的权限控制,可以结合动态路由和角色权限管理,动态生成路由表。

// 根据用户角色过滤路由
function filterRoutes(routes, role) {
  return routes.filter(route => {
    if (route.meta && route.meta.roles) {
      return route.meta.roles.includes(role)
    }
    return true
  })
}

通过以上步骤,可以实现 Vue 路由的登录功能,保护需要认证的页面,并管理用户的登录状态。

标签: 路由vue
分享给朋友:

相关文章

vue实现文字播放栏

vue实现文字播放栏

Vue 实现文字播放栏(跑马灯效果) 方法一:使用 CSS 动画 + Vue 数据绑定 通过 CSS 的 @keyframes 实现动画效果,结合 Vue 的动态数据绑定控制内容。 <tem…

vue实现逻辑

vue实现逻辑

Vue 实现逻辑的核心概念 Vue.js 是一个渐进式 JavaScript 框架,其核心逻辑围绕数据驱动和组件化开发。通过响应式系统、虚拟 DOM 和组件生命周期等机制,Vue 实现了高效的前端开发…

vue 实现modal

vue 实现modal

Vue 实现 Modal 的方法 使用 Vue 原生组件 通过 Vue 的组件系统可以轻松实现 Modal。创建一个可复用的 Modal 组件,通过 props 控制显示与隐藏。 <templ…

vue 实现平面

vue 实现平面

Vue 实现平面的方法 在 Vue 中实现平面效果通常涉及 CSS 样式、UI 框架或自定义组件的使用。以下是几种常见方法: 使用 CSS 样式 通过 Vue 的样式绑定或 scoped CSS 为…

vue实现Pop

vue实现Pop

Vue 实现 Popover 组件的方法 使用 Vue 内置指令 v-show/v-if 和事件监听 通过 Vue 的指令和事件绑定实现基础的 Popover 功能。定义一个布尔值控制 Popover…

vue实现tabs

vue实现tabs

Vue实现Tabs组件的方法 使用动态组件和v-for指令 在Vue中创建Tabs组件可以通过动态组件和v-for指令实现。定义一个包含tab标题和内容的数组,使用v-for渲染tab标题,并通过点击…