当前位置:首页 > VUE

vue实现拦截登录

2026-03-28 07:25:06VUE

Vue 实现登录拦截的方法

在 Vue 中实现登录拦截通常涉及路由守卫和全局状态管理。以下是几种常见的方法:

使用路由守卫进行拦截

在 Vue Router 中可以通过 beforeEach 全局前置守卫实现登录拦截:

router.beforeEach((to, from, next) => {
  const isAuthenticated = localStorage.getItem('token')

  if (to.meta.requiresAuth && !isAuthenticated) {
    next('/login')
  } else {
    next()
  }
})

在路由配置中添加元信息标记需要认证的路由:

vue实现拦截登录

{
  path: '/dashboard',
  component: Dashboard,
  meta: { requiresAuth: true }
}

结合 Vuex 状态管理

使用 Vuex 存储登录状态可以更灵活地管理认证:

// store.js
state: {
  isLoggedIn: false,
  user: null
},
mutations: {
  setUser(state, user) {
    state.user = user
    state.isLoggedIn = !!user
  }
}

在路由守卫中检查 Vuex 状态:

vue实现拦截登录

router.beforeEach((to, from, next) => {
  if (to.meta.requiresAuth && !store.state.isLoggedIn) {
    next('/login')
  } else {
    next()
  }
})

实现 HTTP 拦截器

在 axios 拦截器中检查认证状态:

axios.interceptors.response.use(
  response => response,
  error => {
    if (error.response.status === 401) {
      router.push('/login')
    }
    return Promise.reject(error)
  }
)

处理登录状态持久化

结合 localStorage 实现登录状态持久化:

// 登录成功后
localStorage.setItem('token', response.data.token)
store.commit('setUser', response.data.user)

在应用初始化时恢复登录状态:

const token = localStorage.getItem('token')
if (token) {
  axios.defaults.headers.common['Authorization'] = `Bearer ${token}`
  store.dispatch('fetchUser') // 获取用户信息
}

这些方法可以单独使用,也可以组合使用以实现更完善的登录拦截机制。根据项目需求选择合适的方式或组合多种方法。

标签: vue
分享给朋友:

相关文章

vue实现标签

vue实现标签

Vue 实现标签的方法 在 Vue 中实现标签功能可以通过多种方式完成,以下是几种常见的方法: 使用动态组件 动态组件可以根据不同的条件渲染不同的标签内容。通过 :is 属性动态绑定组件名,实现标签…

vue实现画板

vue实现画板

Vue 实现画板功能 在 Vue 中实现画板功能可以通过 HTML5 的 Canvas API 实现。以下是一个完整的实现方案: 创建 Vue 组件 新建一个 Vue 单文件组件(SFC),命名为…

vue实现fragment

vue实现fragment

Vue 实现 Fragment 的方法 在 Vue 中,Fragment 允许组件返回多个根节点而不需要包裹一个额外的 DOM 元素。以下是几种实现方式: 使用 Vue 3 的 <templa…

vue实现肢体识别

vue实现肢体识别

Vue 中实现肢体识别的方法 在 Vue 项目中实现肢体识别通常需要结合第三方库或 API,例如 TensorFlow.js、MediaPipe 或 OpenCV。以下是几种常见的实现方式: 使用…

vue实现拨号功能

vue实现拨号功能

Vue实现拨号功能的方法 使用HTML5的tel协议 在Vue模板中直接使用<a>标签的tel:协议实现拨号功能。这种方法适用于移动端浏览器,点击后会调起系统的拨号界面。 <tem…

vue实现返回按钮

vue实现返回按钮

实现返回按钮的几种方法 在Vue中实现返回按钮功能可以通过以下几种方式: 使用浏览器历史记录API methods: { goBack() { window.history.le…