当前位置:首页 > VUE

vue路由跳转实现登录

2026-02-22 02:32:09VUE

vue路由跳转实现登录

在Vue中实现登录功能并跳转路由,通常需要结合Vue Router和状态管理(如Vuex或Pinia)。以下是常见的实现方法:

创建登录组件

开发一个登录表单组件,包含用户名和密码输入框以及提交按钮。使用v-model绑定表单数据:

<template>
  <form @submit.prevent="handleLogin">
    <input v-model="username" placeholder="用户名"/>
    <input v-model="password" type="password" placeholder="密码"/>
    <button type="submit">登录</button>
  </form>
</template>

<script>
export default {
  data() {
    return {
      username: '',
      password: ''
    }
  },
  methods: {
    async handleLogin() {
      // 登录逻辑
    }
  }
}
</script>

配置路由守卫

在路由配置中设置导航守卫,保护需要认证的路由:

vue路由跳转实现登录

// router/index.js
import { createRouter, createWebHistory } from 'vue-router'

const routes = [
  {
    path: '/login',
    component: () => import('@/views/Login.vue')
  },
  {
    path: '/dashboard',
    component: () => import('@/views/Dashboard.vue'),
    meta: { requiresAuth: true }
  }
]

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

router.beforeEach((to, from, next) => {
  const isAuthenticated = localStorage.getItem('token')
  if (to.meta.requiresAuth && !isAuthenticated) {
    next('/login')
  } else {
    next()
  }
})

export default router

实现登录逻辑

在登录方法中处理认证成功后跳转:

methods: {
  async handleLogin() {
    try {
      const response = await axios.post('/api/login', {
        username: this.username,
        password: this.password
      })

      localStorage.setItem('token', response.data.token)
      this.$router.push('/dashboard')
    } catch (error) {
      console.error('登录失败:', error)
    }
  }
}

处理登录状态

使用状态管理存储登录状态,便于全局访问:

vue路由跳转实现登录

// store/auth.js
export const useAuthStore = defineStore('auth', {
  state: () => ({
    isAuthenticated: !!localStorage.getItem('token')
  }),
  actions: {
    login(token) {
      localStorage.setItem('token', token)
      this.isAuthenticated = true
    },
    logout() {
      localStorage.removeItem('token')
      this.isAuthenticated = false
    }
  }
})

响应式导航栏

根据登录状态显示不同导航选项:

<template>
  <nav>
    <router-link to="/">首页</router-link>
    <router-link v-if="!auth.isAuthenticated" to="/login">登录</router-link>
    <button v-else @click="auth.logout">退出</button>
  </nav>
</template>

<script setup>
import { useAuthStore } from '@/stores/auth'
const auth = useAuthStore()
</script>

权限验证API请求

在axios拦截器中添加认证token:

// utils/axios.js
import axios from 'axios'

const instance = axios.create({
  baseURL: '/api'
})

instance.interceptors.request.use(config => {
  const token = localStorage.getItem('token')
  if (token) {
    config.headers.Authorization = `Bearer ${token}`
  }
  return config
})

export default instance

以上方法实现了Vue应用中的登录功能与路由跳转,包括路由保护、状态管理和API请求认证。根据实际项目需求,可以进一步扩展和完善这些功能。

标签: 跳转路由
分享给朋友:

相关文章

Vue前端路由实现

Vue前端路由实现

Vue前端路由的实现方式 Vue前端路由通常通过vue-router库实现,它是Vue.js官方的路由管理器,用于构建单页面应用(SPA)。以下是核心实现方法和步骤: 安装vue-router 通过…

vue 路由实现原理

vue 路由实现原理

Vue 路由实现原理 Vue Router 是 Vue.js 官方的路由管理器,其核心原理基于前端路由的实现方式。以下是 Vue Router 的主要实现机制: 路由模式 Vue Router 支持…

vue 实现自动跳转

vue 实现自动跳转

使用 vue-router 实现自动跳转 在 Vue 项目中,可以通过 vue-router 的编程式导航实现页面自动跳转。以下是几种常见场景的实现方法: 基础跳转 // 在组件方法中调用 thi…

vue怎么实现跳转

vue怎么实现跳转

Vue 实现页面跳转的方法 使用 router-link 组件 router-link 是 Vue Router 提供的组件,用于声明式导航。通过 to 属性指定目标路由路径或命名路由。 <r…

vue实现组件跳转

vue实现组件跳转

vue实现组件跳转的方法 在Vue中实现组件跳转有多种方式,以下是常见的几种方法: 使用<router-link>进行导航 <router-link to="/path/to/c…

vue实现app跳转

vue实现app跳转

Vue 实现 App 跳转的方法 在 Vue 中实现 App 跳转通常涉及以下几种场景:从 H5 页面跳转到原生 App、从 App 内跳转到其他页面或外部链接。以下是具体实现方式: 通过 URL…