当前位置:首页 > VUE

vue 实现登录跳转

2026-01-08 13:17:49VUE

实现登录跳转的核心逻辑

在Vue中实现登录跳转通常涉及路由守卫、状态管理和API交互。以下是具体实现方式:

配置路由守卫

在路由配置文件中添加beforeEach守卫,检查用户是否已登录。未登录时重定向到登录页:

// router/index.js
import Vue from 'vue'
import Router from 'vue-router'
import store from '@/store'

Vue.use(Router)

const router = new Router({
  routes: [...]
})

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

创建登录组件

构建包含表单提交逻辑的登录组件,成功登录后跳转到目标页面:

<template>
  <form @submit.prevent="handleLogin">
    <input v-model="username" type="text" placeholder="Username">
    <input v-model="password" type="password" placeholder="Password">
    <button type="submit">Login</button>
  </form>
</template>

<script>
export default {
  data() {
    return {
      username: '',
      password: ''
    }
  },
  methods: {
    async handleLogin() {
      try {
        await this.$store.dispatch('login', {
          username: this.username,
          password: this.password
        })
        this.$router.push(this.$route.query.redirect || '/dashboard')
      } catch (error) {
        alert('Login failed')
      }
    }
  }
}
</script>

设置Vuex状态管理

通过Vuex存储登录状态和用户信息:

// store/index.js
import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

export default new Vuex.Store({
  state: {
    user: null,
    token: null
  },
  getters: {
    isAuthenticated: state => !!state.token
  },
  mutations: {
    SET_USER(state, { user, token }) {
      state.user = user
      state.token = token
    }
  },
  actions: {
    async login({ commit }, credentials) {
      const response = await api.post('/login', credentials)
      commit('SET_USER', response.data)
    }
  }
})

处理带重定向的登录链接

在需要登录的页面跳转时,携带原始路径参数:

// 在需要权限的组件中
this.$router.push({
  path: '/login',
  query: { redirect: this.$route.fullPath }
})

持久化登录状态

使用localStoragecookie保持登录状态:

// 在Vuex mutations中添加持久化逻辑
mutations: {
  SET_USER(state, { user, token }) {
    state.user = user
    state.token = token
    localStorage.setItem('authToken', token)
  },
  INIT_STATE(state) {
    state.token = localStorage.getItem('authToken')
  }
}

// 在应用初始化时调用
store.commit('INIT_STATE')

实现注销功能

清除状态并重定向到登录页:

methods: {
  logout() {
    this.$store.commit('SET_USER', { user: null, token: null })
    localStorage.removeItem('authToken')
    this.$router.push('/login')
  }
}

vue 实现登录跳转

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

相关文章

vue实现静态查询

vue实现静态查询

Vue 实现静态查询 在 Vue 中实现静态查询通常指不依赖后端接口,直接在前端处理数据筛选或搜索功能。以下是几种常见实现方式: 使用计算属性过滤数据 通过计算属性对静态数据进行筛选,适合简单查询场…

vue实现头像剪切

vue实现头像剪切

Vue 实现头像剪切的实现方法 使用 vue-cropperjs 库 vue-cropperjs 是一个基于 cropperjs 的 Vue 组件,专门用于图片裁剪。安装方式如下: npm ins…

vue实现网页切换

vue实现网页切换

Vue 实现网页切换的方法 在 Vue 中实现网页切换通常可以通过以下几种方式完成,具体取决于项目需求和路由管理方式。 使用 Vue Router Vue Router 是 Vue.js 官方提供的…

vue如何实现冒泡

vue如何实现冒泡

Vue 实现冒泡排序 在 Vue 中实现冒泡排序,可以通过数据绑定和响应式特性动态展示排序过程。以下是一个完整的实现示例,包含代码和详细说明。 数据准备 在 Vue 的 data 中定义一个数组作…

vue表格重置怎么实现

vue表格重置怎么实现

重置表格数据的方法 在Vue中重置表格数据通常需要操作绑定的数据源,以下是几种常见实现方式: 直接重置数据源 // 假设表格绑定的是tableData this.tableData = [..…

vue实现压缩上传文件

vue实现压缩上传文件

压缩上传文件的实现方法 在Vue中实现文件压缩和上传功能,可以通过以下步骤完成。该方法结合了前端文件压缩库和HTTP请求,确保文件在上传前被有效压缩。 安装必要的依赖 需要使用compressor…