当前位置:首页 > VUE

vue实现拦截登录

2026-03-07 21:15:23VUE

Vue 实现拦截登录的方法

在 Vue 项目中,拦截登录通常用于实现路由守卫、权限控制或全局登录状态管理。以下是几种常见的实现方式:

使用 Vue Router 的路由守卫

通过 Vue Router 的全局前置守卫 beforeEach,可以在路由跳转前检查用户是否已登录:

// router/index.js
import router from './router'

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

封装 Axios 请求拦截器

通过 Axios 的请求拦截器,可以在每次请求前检查用户登录状态:

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

const service = axios.create({
  baseURL: process.env.VUE_APP_BASE_API,
  timeout: 5000
})

service.interceptors.request.use(
  config => {
    const token = localStorage.getItem('token')
    if (token) {
      config.headers['Authorization'] = 'Bearer ' + token
    }
    return config
  },
  error => {
    return Promise.reject(error)
  }
)

使用 Vuex 管理登录状态

通过 Vuex 集中管理登录状态,并在组件中通过计算属性获取:

// store/modules/user.js
const state = {
  token: localStorage.getItem('token') || ''
}

const mutations = {
  SET_TOKEN: (state, token) => {
    state.token = token
    localStorage.setItem('token', token)
  }
}

全局混入登录检查

通过 Vue 的全局混入功能,在组件创建时检查登录状态:

// main.js
Vue.mixin({
  created() {
    if (!this.$store.state.user.token && this.$route.meta.requiresAuth) {
      this.$router.push('/login')
    }
  }
})

组合式 API 实现

在 Vue 3 中,可以使用组合式 API 封装登录检查逻辑:

vue实现拦截登录

// composables/useAuth.js
import { computed } from 'vue'
import { useStore } from 'vuex'

export function useAuth() {
  const store = useStore()
  const isAuthenticated = computed(() => !!store.state.user.token)

  return {
    isAuthenticated
  }
}

这些方法可以单独使用,也可以组合使用以实现更完善的登录拦截机制。根据项目需求选择合适的实现方式,通常建议结合路由守卫和状态管理来实现完整的登录拦截功能。

标签: vue
分享给朋友:

相关文章

vue实现批量

vue实现批量

Vue 实现批量操作的方法 在 Vue 中实现批量操作通常涉及选择多个项目并执行统一处理,例如批量删除、批量更新等。以下是几种常见实现方式: 表格多选批量操作 使用 el-table 配合复选框实现…

vue实现handsontable

vue实现handsontable

Vue 中实现 Handsontable 要在 Vue 项目中集成 Handsontable,可以使用官方提供的 @handsontable/vue 封装库。以下是一个完整的实现步骤。 安装依赖 确…

vue实现翻译

vue实现翻译

Vue 实现翻译功能的方法 使用 i18n 插件实现多语言切换 安装 vue-i18n 插件: npm install vue-i18n 创建语言资源文件(如 en.json 和 zh.json):…

vue实现抖动

vue实现抖动

Vue 实现抖动效果 在 Vue 中实现抖动效果可以通过 CSS 动画或 JavaScript 动画库来实现。以下是几种常见的方法: 使用 CSS 动画 通过定义 @keyframes 动画并在 V…

vue实现CRUD

vue实现CRUD

Vue 实现 CRUD 操作 Vue 提供了响应式数据绑定和组件化开发能力,结合后端 API 可以轻松实现 CRUD(增删改查)功能。以下是基于 Vue 3 和 Axios 的完整实现方案。 安装依…

vue 实现音乐

vue 实现音乐

Vue 实现音乐播放功能 在 Vue 中实现音乐播放功能,可以通过 HTML5 的 <audio> 元素或第三方库如 howler.js 来实现。以下是两种方法的详细步骤: 使用 HTM…