当前位置:首页 > VUE

vue实现登陆拦截

2026-02-21 06:30:01VUE

实现登录拦截的方法

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

使用全局前置守卫

通过router.beforeEach在路由跳转前检查用户登录状态,未登录则重定向到登录页。

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

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

配置路由元信息

在路由配置中添加meta字段标记需要认证的路由。

const routes = [
  {
    path: '/dashboard',
    component: Dashboard,
    meta: { requiresAuth: true }
  },
  {
    path: '/login',
    component: Login
  }
]

结合Vuex状态管理

使用Vuex存储和检查用户认证状态。

// store/modules/user.js
const state = {
  isAuthenticated: false,
  user: null
}

const mutations = {
  SET_AUTH(state, status) {
    state.isAuthenticated = status
  }
}

处理Token验证

在拦截器中验证JWT等认证Token的有效性。

// axios拦截器
axios.interceptors.request.use(config => {
  const token = localStorage.getItem('token')
  if (token) {
    config.headers.Authorization = `Bearer ${token}`
  }
  return config
})

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

登录成功处理

登录成功后更新状态并重定向。

// Login.vue methods
login() {
  auth.login(this.credentials).then(response => {
    localStorage.setItem('token', response.data.token)
    this.$store.commit('SET_AUTH', true)
    this.$router.push(this.$route.query.redirect || '/dashboard')
  })
}

退出登录处理

清除认证信息并重定向到登录页。

// Logout.vue
logout() {
  localStorage.removeItem('token')
  this.$store.commit('SET_AUTH', false)
  this.$router.push('/login')
}

注意事项

  • 确保敏感路由都添加了requiresAuth元信息
  • 考虑Token过期时间的处理
  • 实现刷新页面后的状态保持
  • 生产环境应使用HTTPS保护认证信息
  • 后端也需要相应的认证中间件进行双重保护

vue实现登陆拦截

标签: vue
分享给朋友:

相关文章

vue实现语音

vue实现语音

Vue 实现语音功能的方法 使用 Web Speech API Vue 可以结合 Web Speech API 实现语音识别和合成功能。Web Speech API 包含 SpeechRecognit…

vue实现muli

vue实现muli

Vue 实现多语言(i18n)支持 在 Vue 项目中实现多语言(i18n)功能,通常使用 vue-i18n 插件。以下是具体实现步骤: 安装 vue-i18n npm install vue-i…

vue实现键盘

vue实现键盘

Vue 实现键盘功能 在Vue中实现键盘功能通常涉及监听键盘事件、处理输入以及渲染虚拟键盘界面。以下是几种常见的实现方式: 监听键盘事件 通过@keydown或@keyup指令监听键盘事件,适用于…

vue筛选实现

vue筛选实现

Vue 筛选实现方法 使用计算属性实现筛选 计算属性是 Vue 中实现数据筛选的常用方式。通过定义一个计算属性,可以根据输入的条件动态过滤数据。 <template> <di…

vue实现全屏

vue实现全屏

Vue 实现全屏功能的方法 在 Vue 中实现全屏功能可以通过浏览器提供的 Fullscreen API 来实现。以下是几种常见的实现方式: 使用原生 Fullscreen API 通过调用 do…

vue实现心电图

vue实现心电图

Vue 实现心电图效果 在 Vue 中实现心电图效果通常需要结合 Canvas 或 SVG 进行动态绘图,模拟心电图数据的实时变化。以下是两种实现方式的核心思路和代码示例: 使用 Canvas…