当前位置:首页 > 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
})

实现路由守卫

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

vue路由登录实现

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('/')  // 跳转到首页
    })
  }
}

动态路由(可选)

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

vue路由登录实现

// 登录成功后动态添加路由
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中的状态:

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

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

相关文章

vue实现markdown

vue实现markdown

Vue 实现 Markdown 编辑器 在 Vue 中实现 Markdown 编辑器可以通过集成第三方库或自定义解析器完成。以下是两种常见方法: 使用第三方库(如 marked 或 markdown…

vue实现监听

vue实现监听

监听数据变化 在Vue中,可以通过watch选项或$watch方法监听数据的变化。watch适用于组件选项内声明式监听,$watch适用于动态监听。 // 选项式API export default…

vue实现computed

vue实现computed

Vue 中 computed 的实现原理 computed 属性是 Vue 的一个核心特性,它基于响应式依赖进行缓存,仅在依赖发生变化时重新计算。以下是 computed 的实现方式: 基本用法 在…

vue实现tabbar

vue实现tabbar

Vue 实现 TabBar 的方法 使用 Vue Router 实现基础 TabBar 安装 Vue Router 依赖: npm install vue-router 创建路由配置文件(route…

vue实现双击

vue实现双击

Vue 实现双击事件的方法 在Vue中实现双击事件可以通过以下几种方式完成,具体选择取决于项目需求和开发习惯。 使用 @dblclick 指令 Vue提供了内置的@dblclick指令,可以直接在模…

vue如何实现登录

vue如何实现登录

实现登录功能的基本步骤 使用Vue实现登录功能通常需要结合后端API、状态管理以及路由控制。以下是常见的实现方式: 创建登录表单组件 在Vue组件中构建包含用户名和密码输入框的表单: <te…