当前位置:首页 > VUE

vue 实现登录跳转

2026-02-11 02:12:07VUE

实现登录跳转的基本逻辑

在Vue中实现登录跳转通常需要结合路由守卫(Navigation Guards)和状态管理(如Vuex或Pinia)。核心流程是验证用户登录状态,未登录时重定向到登录页,登录成功后跳转到目标页。

安装并配置路由

确保项目已安装Vue Router。定义路由时,为需要权限的页面添加元信息(meta字段)标记:

// router/index.js
const routes = [
  {
    path: '/login',
    component: () => import('@/views/Login.vue')
  },
  {
    path: '/dashboard',
    component: () => import('@/views/Dashboard.vue'),
    meta: { requiresAuth: true } // 需要登录才能访问
  }
]

添加全局前置守卫

在路由配置中添加beforeEach守卫,检查目标路由是否需要认证:

// router/index.js
router.beforeEach((to, from, next) => {
  const isAuthenticated = localStorage.getItem('token') // 或从Vuex/Pinia获取
  if (to.matched.some(record => record.meta.requiresAuth) && !isAuthenticated) {
    next({ path: '/login', query: { redirect: to.fullPath } }) // 保存目标路径
  } else {
    next()
  }
})

实现登录表单提交

在登录组件中,处理表单提交并存储认证信息:

// views/Login.vue
methods: {
  async handleSubmit() {
    try {
      const res = await api.login(this.formData)
      localStorage.setItem('token', res.data.token)

      // 跳转到原目标页或默认页
      const redirect = this.$route.query.redirect || '/dashboard'
      this.$router.push(redirect)
    } catch (error) {
      console.error('登录失败', error)
    }
  }
}

状态管理集成(可选)

对于复杂应用,建议使用Vuex或Pinia集中管理登录状态:

// store/auth.js (Pinia示例)
export const useAuthStore = defineStore('auth', {
  state: () => ({
    token: null
  }),
  actions: {
    setToken(token) {
      this.token = token
      localStorage.setItem('token', token)
    },
    logout() {
      this.token = null
      localStorage.removeItem('token')
    }
  }
})

退出登录处理

实现退出功能时需清除认证信息并重定向:

methods: {
  logout() {
    this.$store.dispatch('auth/logout') // Vuex示例
    this.$router.push('/login')
  }
}

动态路由权限(进阶)

如需根据角色动态生成路由,可在登录后请求权限接口并调用router.addRoutes()(Vue Router 3.x)或router.addRoute()(Vue Router 4.x)添加私有路由。

vue 实现登录跳转

注意事项

  • 敏感路由应同时在后端进行权限验证
  • JWT等token需考虑过期时间和刷新机制
  • 生产环境建议使用HttpOnly的Cookie存储敏感信息

标签: 跳转vue
分享给朋友:

相关文章

vue里实现增删改查

vue里实现增删改查

在Vue中实现增删改查 数据初始化 在Vue组件的data中定义初始数据和表单绑定的变量: data() { return { items: [ { id: 1, name:…

vue实现功能

vue实现功能

Vue 功能实现方法 Vue.js 是一个渐进式 JavaScript 框架,用于构建用户界面。以下是实现常见功能的几种方法: 数据绑定与响应式更新 在 Vue 中,数据绑定通过 v-model…

vue 实现弹幕

vue 实现弹幕

vue 实现弹幕的方法 使用 CSS 动画和动态渲染 在 Vue 中实现弹幕效果,可以通过动态渲染弹幕元素并结合 CSS 动画实现。以下是具体步骤: 数据准备 创建一个数组存储弹幕数据,每条弹幕包…

vue实现单据

vue实现单据

Vue 实现单据功能的方法 使用 Vue 实现单据功能通常涉及表单设计、数据绑定、验证和提交等环节。以下是具体实现方案: 表单设计与数据绑定 使用 Vue 的 v-model 指令实现表单数据的双向…

vue实现datalist

vue实现datalist

使用 Vue 实现 HTML5 的 datalist 功能 HTML5 的 <datalist> 元素提供了一种自动完成输入框的功能,允许用户在输入时从预定义的选项列表中选择。以下是几种在…

vue 绑定实现

vue 绑定实现

Vue 绑定实现 Vue 提供了多种数据绑定的方式,包括文本插值、属性绑定、事件绑定、双向绑定等。以下是常见的绑定实现方法: 文本插值 使用双大括号 {{ }} 进行文本插值,将数据动态渲染到 DO…