当前位置:首页 > 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 实现安全免登录的方案 免登录功能通常通过持久化认证状态(如 Token)实现,但需兼顾安全性。以下是基于 Vue 的常见实现方案: 基于 Token 的免登录 登录成功后存储 Token…

vue实现倒计时抢券

vue实现倒计时抢券

Vue 实现倒计时抢券功能 核心逻辑 倒计时抢券功能需要结合时间计算、状态管理和界面交互。通过 Vue 的响应式特性和生命周期钩子,可以高效实现这一需求。 实现步骤 1. 数据准备 在 Vue 组件…

vue实现单点

vue实现单点

Vue 实现单点登录(SSO)方案 单点登录(SSO)允许用户在多个相关但独立的系统中使用同一组凭证登录。以下是基于 Vue 的实现方案: 基于 OAuth2/OpenID Connect 的实现…

vue 实现豆瓣

vue 实现豆瓣

以下是基于 Vue 实现豆瓣电影类功能的实现方案,涵盖核心模块和技术要点: 数据获取与 API 调用 使用豆瓣开放 API(需注意调用频率限制)或第三方代理接口 推荐 axios 进行异步请求,配合…

实现.vue文件

实现.vue文件

创建.vue文件的基本结构 一个标准的.vue文件包含三个部分:模板(template)、脚本(script)和样式(style)。这种结构允许开发者在一个文件中管理组件的HTML、JavaScrip…

vue实现文字

vue实现文字

Vue 中实现文字显示的方法 在 Vue 中实现文字显示可以通过多种方式,包括插值表达式、指令、组件等。以下是几种常见的实现方法: 插值表达式 使用双大括号 {{ }} 进行文本插值,这是 Vue…