当前位置:首页 > VUE

vue如何实现token登录

2026-02-22 23:06:17VUE

Vue 实现 Token 登录的方法

登录逻辑实现

在登录页面发送请求获取 token,通常使用 axios 或其他 HTTP 客户端。示例代码展示如何在 Vue 中处理登录请求:

// 登录方法示例
async handleLogin() {
  try {
    const response = await axios.post('/api/login', {
      username: this.username,
      password: this.password
    })
    const token = response.data.token
    localStorage.setItem('token', token)
    this.$router.push('/dashboard')
  } catch (error) {
    console.error('登录失败:', error)
  }
}

路由守卫配置

通过 Vue Router 的全局前置守卫保护需要认证的路由。未携带有效 token 时重定向到登录页:

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

Axios 请求拦截

设置 axios 拦截器自动为每个请求添加 Authorization 头:

axios.interceptors.request.use(config => {
  const token = localStorage.getItem('token')
  if (token) {
    config.headers.Authorization = `Bearer ${token}`
  }
  return config
}, error => {
  return Promise.reject(error)
})

响应拦截处理

配置响应拦截器处理 token 过期情况:

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

Token 刷新机制

实现静默刷新 token 的逻辑,避免频繁要求用户重新登录:

async refreshToken() {
  try {
    const refreshToken = localStorage.getItem('refreshToken')
    const response = await axios.post('/api/refresh', { refreshToken })
    localStorage.setItem('token', response.data.token)
    return response.data.token
  } catch (error) {
    this.logout()
    throw error
  }
}

用户状态管理

使用 Vuex 集中管理用户认证状态:

const store = new Vuex.Store({
  state: {
    token: localStorage.getItem('token') || null
  },
  mutations: {
    setToken(state, token) {
      state.token = token
      localStorage.setItem('token', token)
    },
    clearToken(state) {
      state.token = null
      localStorage.removeItem('token')
    }
  }
})

退出登录处理

实现安全的退出功能,清除所有认证信息:

methods: {
  logout() {
    this.$store.commit('clearToken')
    this.$router.push('/login')
  }
}

以上方法组合使用可以构建完整的 Vue token 认证系统,注意根据实际业务需求调整实现细节。

vue如何实现token登录

标签: 如何实现vue
分享给朋友:

相关文章

vue前端实现登录

vue前端实现登录

实现登录功能的基本流程 使用Vue实现登录功能需要结合前端框架和后端API交互。以下是一个典型的实现方案: 安装必要依赖 确保项目已安装axios用于HTTP请求: npm install a…

vue实现主页

vue实现主页

Vue 实现主页的基本步骤 创建一个 Vue 主页通常涉及以下几个关键步骤,从项目初始化到页面布局和功能实现。 初始化 Vue 项目 使用 Vue CLI 或 Vite 初始化项目。Vue CLI…

vue权限实现

vue权限实现

Vue 权限实现方案 基于路由的权限控制 通过路由守卫实现权限验证,在路由配置中添加meta字段标记权限要求。在router.beforeEach中检查用户权限与路由要求的匹配情况。 // rout…

vue实现订单

vue实现订单

Vue 实现订单功能 订单数据结构设计 订单数据通常包含以下字段: order: { id: String, // 订单ID userId: String,…

vue实现抖动

vue实现抖动

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

vue jwt实现

vue jwt实现

Vue JWT 实现方法 安装依赖 确保项目中安装了 jsonwebtoken(后端)和 axios(前端)。若使用 Vue 3,可搭配 vue-router 和 pinia(或 vuex)管理状态。…