当前位置:首页 > VUE

vue路由登录实现

2026-03-29 00:55:57VUE

路由登录实现的基本思路

在Vue项目中实现路由登录功能通常需要结合Vue Router和状态管理工具(如Vuex或Pinia)。核心逻辑是通过路由守卫(Navigation Guards)控制页面访问权限,未登录用户尝试访问受保护路由时重定向到登录页。

安装必要依赖

确保项目已安装vue-router。如果使用状态管理,需安装vuex或pinia:

npm install vue-router
npm install vuex  # 或 pinia

路由配置

在router/index.js中配置路由,标记需要认证的路由:

import { createRouter, createWebHistory } from 'vue-router'

const routes = [
  {
    path: '/',
    name: 'Home',
    component: () => import('@/views/Home.vue'),
    meta: { requiresAuth: true }  // 需要认证的标记
  },
  {
    path: '/login',
    name: 'Login',
    component: () => import('@/views/Login.vue')
  }
]

const router = createRouter({
  history: createWebHistory(),
  routes
})

实现路由守卫

添加全局前置守卫检查用户认证状态:

router.beforeEach((to, from, next) => {
  const isAuthenticated = localStorage.getItem('token')  // 从localStorage或store获取

  if (to.meta.requiresAuth && !isAuthenticated) {
    next('/login')  // 重定向到登录页
  } else {
    next()  // 放行
  }
})

登录逻辑实现

在登录组件中处理认证成功后跳转:

// Login.vue
methods: {
  handleLogin() {
    api.login(this.credentials).then(res => {
      localStorage.setItem('token', res.data.token)  // 存储token
      this.$router.push('/')  // 跳转到首页
    })
  }
}

动态路由(可选)

对于角色权限系统,可动态添加路由:

// 登录成功后动态添加路由
api.getUserRoutes().then(routes => {
  routes.forEach(route => {
    router.addRoute(route)
  })
})

退出登录处理

清除认证信息并重定向:

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

使用状态管理(Vuex示例)

store/auth.js中维护登录状态:

export default {
  state: () => ({
    user: null,
    token: null
  }),
  mutations: {
    SET_USER(state, payload) {
      state.user = payload
    },
    SET_TOKEN(state, payload) {
      state.token = payload
    }
  }
}

路由守卫改为检查store中的状态:

vue路由登录实现

router.beforeEach((to, from, next) => {
  if (to.meta.requiresAuth && !store.state.auth.token) {
    next('/login')
  } else {
    next()
  }
})

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

相关文章

vue实现store

vue实现store

Vue 实现 Store 在 Vue 中,可以通过 Vuex 或 Pinia 实现全局状态管理(Store)。以下是两种主流方案的实现方法。 使用 Vuex 实现 Store Vuex 是 Vue…

vue实现app

vue实现app

Vue 实现 App 的常见方法 使用 Vue 开发移动端 App 主要有两种主流方案:混合开发(Hybrid)和原生渲染。以下是具体实现方式和工具链: 混合开发方案(WebView 嵌入) 通过…

vue插槽实现

vue插槽实现

插槽的基本概念 Vue插槽(Slot)是一种内容分发机制,允许父组件向子组件传递模板片段,子组件通过<slot>标签定义接收位置。插槽的核心作用是增强组件的灵活性和复用性。 默认插槽 子…

vue实现通知

vue实现通知

Vue 实现通知功能的方法 使用 Vue 实现通知功能可以通过多种方式实现,以下是一些常见的方法: 使用 Vue 的全局事件总线 在 Vue 中可以通过事件总线实现通知功能。创建一个全局事件总线,然…

vue 实现视频

vue 实现视频

Vue 实现视频播放功能 使用 Vue 实现视频播放功能可以通过 HTML5 的 <video> 标签或第三方库(如 video.js)来实现。以下是两种常见的方法: 使用 HTML5…

vue实现加减

vue实现加减

Vue 实现加减功能 在 Vue 中实现加减功能可以通过数据绑定和事件监听来完成。以下是一个简单的实现方法: 模板部分 <template> <div> <…