当前位置:首页 > VUE

vue router实现登录

2026-02-11 08:24:30VUE

Vue Router 实现登录功能

在 Vue.js 应用中,使用 Vue Router 实现登录功能通常涉及路由守卫、权限控制和状态管理。以下是实现登录功能的关键步骤:

配置路由守卫

在路由配置中设置全局前置守卫 (beforeEach),检查用户是否已登录。未登录用户尝试访问受限页面时,重定向到登录页面。

// router/index.js
import Vue from 'vue'
import Router from 'vue-router'
import Login from '@/views/Login.vue'
import Dashboard from '@/views/Dashboard.vue'

Vue.use(Router)

const router = new Router({
  routes: [
    { path: '/login', component: Login },
    { path: '/dashboard', component: Dashboard, meta: { requiresAuth: true } }
  ]
})

router.beforeEach((to, from, next) => {
  const isAuthenticated = localStorage.getItem('token') // 或其他认证状态检查
  if (to.matched.some(record => record.meta.requiresAuth) && !isAuthenticated) {
    next('/login')
  } else {
    next()
  }
})

export default router

创建登录组件

实现登录表单,处理用户凭据提交,并在成功登录后存储认证令牌并重定向。

vue router实现登录

<!-- views/Login.vue -->
<template>
  <div>
    <form @submit.prevent="login">
      <input v-model="username" type="text" placeholder="用户名">
      <input v-model="password" type="password" placeholder="密码">
      <button type="submit">登录</button>
    </form>
  </div>
</template>

<script>
export default {
  data() {
    return {
      username: '',
      password: ''
    }
  },
  methods: {
    login() {
      // 模拟API调用
      if (this.username && this.password) {
        localStorage.setItem('token', '模拟token')
        this.$router.push('/dashboard')
      }
    }
  }
}
</script>

处理登出功能

实现登出逻辑,清除认证状态并重定向到登录页面。

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

与状态管理集成

对于更复杂的应用,可以将认证状态集成到 Vuex 中。

vue router实现登录

// store/index.js
export default new Vuex.Store({
  state: {
    token: localStorage.getItem('token') || null
  },
  mutations: {
    setToken(state, token) {
      state.token = token
      localStorage.setItem('token', token)
    },
    clearToken(state) {
      state.token = null
      localStorage.removeItem('token')
    }
  },
  getters: {
    isAuthenticated: state => !!state.token
  }
})

更新路由守卫使用 Vuex 状态:

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

动态路由

对于基于角色的权限控制,可以实现动态路由添加。

// 登录成功后动态添加路由
store.dispatch('login', credentials).then(() => {
  const adminRoutes = [
    { path: '/admin', component: AdminPanel }
  ]
  router.addRoutes(adminRoutes)
  next('/dashboard')
})

这些步骤提供了在 Vue.js 应用中实现登录功能的基础框架,可以根据具体需求进行调整和扩展。

标签: vuerouter
分享给朋友:

相关文章

vue实现erp

vue实现erp

Vue实现ERP系统的关键步骤 技术选型与架构设计 采用Vue 3 + TypeScript构建前端,搭配Pinia状态管理,Element Plus或Ant Design Vue作为UI框架。后端可…

vue实现素材

vue实现素材

Vue 实现素材的方法 使用 Vue 组件管理素材 在 Vue 项目中,可以通过组件化的方式管理素材。创建一个专门的组件来加载和显示素材,例如图片、视频或音频文件。组件可以接收素材的路径或 URL 作…

vue 实现表单

vue 实现表单

Vue 表单实现方法 Vue.js 提供了多种方式实现表单,包括双向数据绑定、表单验证和动态表单生成。以下是常见的实现方法: 基础表单绑定 使用 v-model 指令实现表单元素与数据的双向绑定:…

vue实现menu

vue实现menu

Vue 实现 Menu 的方法 使用 Element UI 的 Menu 组件 Element UI 提供了现成的 Menu 组件,适合快速实现导航菜单。安装 Element UI 后,可以直接使用…

vue 实现报价

vue 实现报价

Vue 实现报价功能 在 Vue 中实现报价功能通常涉及前端表单交互、数据计算和与后端 API 的通信。以下是实现报价功能的几种常见方法: 表单设计与数据绑定 使用 Vue 的 v-model 指…

vue实现滚屏

vue实现滚屏

实现滚屏的基本方法 在Vue中实现滚屏效果可以通过多种方式完成,常见的有原生JavaScript滚动方法、第三方库或CSS动画。以下是几种常见实现方式: 使用window.scrollTo或Elem…