当前位置:首页 > 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')
    }
  }
})

退出登录处理

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

vue如何实现token登录

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

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

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

相关文章

vue懒加载实现难吗

vue懒加载实现难吗

vue懒加载的实现难度 Vue懒加载的实现并不复杂,核心逻辑是通过动态导入(Dynamic Imports)和路由配置或组件异步加载完成。以下是具体实现方法: 路由懒加载实现 在Vue Router…

vue实现toggle

vue实现toggle

Vue 实现 Toggle 功能 在 Vue 中实现 toggle(切换)功能可以通过多种方式完成,以下是几种常见的方法: 使用 v-model 和 v-on 通过 v-model 绑定数据,结合…

vue代理实现

vue代理实现

Vue 代理实现方法 在 Vue 项目中,配置代理可以解决开发环境下的跨域问题,通常通过修改 vue.config.js 文件实现。以下是几种常见的代理配置方式: 基础代理配置 在 vue.conf…

vue实现必填

vue实现必填

Vue 实现表单必填验证的方法 在Vue中实现表单必填验证可以通过多种方式完成,以下是几种常见的方法: 使用HTML5原生属性 最简单的必填验证可以通过HTML5的required属性实现: &l…

vue实现系统

vue实现系统

Vue 实现系统的核心方法 使用 Vue.js 构建系统时,需结合其响应式特性与组件化开发模式。以下为关键实现路径: 项目初始化与工程配置 通过 Vue CLI 或 Vite 创建项目骨架,推荐选择…

vue源码实现

vue源码实现

Vue 源码实现解析 Vue.js 的核心实现可以分为响应式系统、虚拟 DOM、模板编译、组件化等几个关键部分。以下是对这些核心机制的详细解析。 响应式系统 Vue 的响应式系统基于 Object.…