当前位置:首页 > 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 实现骰子功能 创建 Vue 组件 在 Vue 项目中创建一个骰子组件,例如 Dice.vue。该组件包含骰子的外观和逻辑。 <template> <div class=…

vue实现curd

vue实现curd

Vue实现CRUD操作 初始化Vue项目 使用Vue CLI创建新项目,安装必要依赖如axios用于HTTP请求 vue create crud-demo cd crud-demo npm inst…

vue实现追加

vue实现追加

追加数据到数组或列表 在Vue中追加数据到数组或列表,可以通过push方法或concat方法实现。以下是几种常见的实现方式: 方法一:使用push方法 this.items.push(newIte…

vue实现word文档实现预览

vue实现word文档实现预览

在Vue中实现Word文档预览可以通过多种方式实现,以下是几种常见的方法: 使用mammoth.js库 mammoth.js是一个将Word文档(.docx)转换为HTML的JavaScript库,…

原生实现vue功能

原生实现vue功能

原生JavaScript实现Vue核心功能 使用原生JavaScript模拟Vue的核心功能需要理解响应式数据绑定、虚拟DOM和组件系统等概念。以下是关键实现方法: 响应式数据系统 通过Object…

vue怎么实现加减

vue怎么实现加减

Vue实现加减功能的方法 使用v-model绑定数据 在Vue中可以通过v-model双向绑定数据,结合methods方法实现加减功能。定义一个数字变量,通过按钮触发增减方法。 <templa…