当前位置:首页 > VUE

vue实现拦截登录

2026-01-08 06:23:34VUE

Vue 实现登录拦截的方法

使用路由守卫进行拦截

Vue Router 提供了全局前置守卫 beforeEach,可以在路由跳转前进行验证。在路由配置文件中添加以下代码:

import router from './router'
import { getToken } from './utils/auth'

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

定义路由元信息

在路由配置中,为需要登录才能访问的页面添加 meta 字段:

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

实现 Token 验证

创建一个 auth.js 工具文件,用于处理 Token 的存储和获取:

const TOKEN_KEY = 'vue_admin_token'

export function getToken() {
  return localStorage.getItem(TOKEN_KEY)
}

export function setToken(token) {
  localStorage.setItem(TOKEN_KEY, token)
}

export function removeToken() {
  localStorage.removeItem(TOKEN_KEY)
}

登录成功后设置 Token

在登录组件中,成功登录后调用 setToken 方法:

import { setToken } from '../utils/auth'

methods: {
  handleLogin() {
    login(this.loginForm).then(response => {
      setToken(response.data.token)
      this.$router.push('/dashboard')
    })
  }
}

响应拦截器处理 Token 过期

在 axios 的响应拦截器中处理 Token 过期的情况:

import axios from 'axios'
import { removeToken } from './auth'

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

退出登录处理

在退出登录时清除 Token 并跳转到登录页:

vue实现拦截登录

import { removeToken } from '../utils/auth'

methods: {
  logout() {
    removeToken()
    this.$router.push('/login')
  }
}

通过以上方法可以实现 Vue 应用的登录拦截功能,确保未登录用户无法访问受保护的路由。

标签: vue
分享给朋友:

相关文章

vue实现点击样式

vue实现点击样式

Vue 实现点击样式的方法 在 Vue 中实现点击样式可以通过多种方式完成,以下是几种常见的方法: 方法一:使用 v-bind:class 动态绑定类名 通过数据驱动的方式动态切换类名,结合 CS…

vue 实现blog

vue 实现blog

Vue 实现博客的基本步骤 使用 Vue 实现博客可以分为前端和后端两部分,前端使用 Vue.js 框架,后端可以选择 Node.js、Python 或其他服务端语言。以下是一个基于 Vue 的博客实…

vue架构实现

vue架构实现

Vue 架构实现核心方案 Vue.js 的架构实现通常围绕模块化、组件化和状态管理展开。以下为常见实现方案: 基于单文件组件(SFC)的模块化 通过 .vue 文件组织模板、脚本和样式: <…

vue 实现过滤

vue 实现过滤

Vue 实现过滤的方法 在 Vue 中实现过滤功能可以通过多种方式完成,包括使用计算属性、自定义过滤器、第三方库等。以下是几种常见的实现方法: 使用计算属性进行过滤 计算属性是 Vue 中最常用的过…

vue实现全屏

vue实现全屏

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

vue 绑定实现

vue 绑定实现

Vue 绑定实现 Vue 提供了多种数据绑定的方式,包括文本插值、属性绑定、事件绑定、双向绑定等。以下是常见的绑定实现方法: 文本插值 使用双大括号 {{ }} 进行文本插值,将数据动态渲染到 DO…