当前位置:首页 > 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 中实现矩阵操作可以通过多种方式完成,以下是一些常见的方法: 使用二维数组表示矩阵 矩阵可以用二维数组来表示,每个元素对应矩阵中的一个值。在 Vue 的 data…

vue实现管道

vue实现管道

Vue 中实现管道(Pipe)功能 在 Vue 中可以通过过滤器(Filters)或计算属性(Computed Properties)实现类似管道的功能,将数据经过多个处理步骤后输出。 使用过滤器(…

通过vue实现

通过vue实现

Vue 实现方法 安装 Vue 确保已安装 Node.js 和 npm,通过以下命令安装 Vue CLI: npm install -g @vue/cli 创建 Vue 项目 使用 Vue CLI…

vue实现通讯

vue实现通讯

Vue 组件通讯方法 父子组件通讯 父组件向子组件传递数据通过 props,子组件向父组件传递数据通过 $emit 事件。 父组件模板: <child-component :message=…

vue实现计数

vue实现计数

Vue 实现计数功能 在 Vue 中实现计数功能可以通过多种方式完成,以下是几种常见的方法: 使用 Vue 数据绑定和事件监听 通过 Vue 的数据绑定和事件监听,可以轻松实现计数功能。以下是一个简…

vue实现梯形

vue实现梯形

在Vue中实现梯形效果,可以通过CSS的transform属性或clip-path属性来实现。以下是几种常见的实现方法: 使用CSS transform实现梯形 通过CSS的transform: s…