当前位置:首页 > VUE

vue 实现基于 token

2026-03-28 09:36:15VUE

基于 Token 的认证实现(Vue)

在 Vue 中实现基于 Token 的认证通常涉及前端与后端的协作,以下是关键步骤和代码示例:

登录获取 Token

通过 API 发送用户凭证(如用户名/密码)到后端,接收并存储返回的 Token:

// 在登录方法中
axios.post('/api/login', {
  username: 'user',
  password: 'pass'
})
.then(response => {
  const token = response.data.token;
  localStorage.setItem('authToken', token); // 存储到本地
  axios.defaults.headers.common['Authorization'] = `Bearer ${token}`; // 设置请求头
})
.catch(error => console.error('登录失败', error));

请求拦截器

通过 axios 拦截器自动为每个请求添加 Token:

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

路由守卫

使用 Vue Router 的导航守卫保护需要认证的路由:

vue 实现基于 token

router.beforeEach((to, from, next) => {
  const isAuthenticated = localStorage.getItem('authToken');
  if (to.meta.requiresAuth && !isAuthenticated) {
    next('/login'); // 跳转到登录页
  } else {
    next();
  }
});

在路由配置中标记需要认证的路由:

{
  path: '/dashboard',
  meta: { requiresAuth: true }
}

Token 过期处理

拦截响应,处理 Token 过期情况:

axios.interceptors.response.use(
  response => response,
  error => {
    if (error.response.status === 401) {
      localStorage.removeItem('authToken'); // 清除无效 Token
      router.push('/login'); // 重定向到登录
    }
    return Promise.reject(error);
  }
);

刷新 Token(可选)

若后端支持 Token 刷新,可在过期时自动获取新 Token:

vue 实现基于 token

if (error.response.status === 401 && !originalRequest._retry) {
  originalRequest._retry = true;
  return axios.post('/api/refresh-token', { refreshToken })
    .then(({ data }) => {
      localStorage.setItem('authToken', data.token);
      originalRequest.headers.Authorization = `Bearer ${data.token}`;
      return axios(originalRequest);
    });
}

关键注意事项

  • 安全存储:避免使用 localStorage 存储敏感信息,生产环境建议结合 HttpOnly Cookie。

  • HTTPS:确保所有通信通过 HTTPS 加密。

  • 注销处理:清除本地 Token 并重置请求头:

    function logout() {
      localStorage.removeItem('authToken');
      delete axios.defaults.headers.common['Authorization'];
    }

通过以上步骤,可在 Vue 应用中实现完整的基于 Token 的认证流程。实际开发时需根据后端 API 规范调整字段名称和逻辑。

标签: vuetoken
分享给朋友:

相关文章

vue实现条件判断

vue实现条件判断

Vue 条件判断实现方法 Vue 提供了多种方式实现条件判断,可以根据不同场景选择合适的方式。 v-if / v-else-if / v-else 这是 Vue 中最常用的条件渲染指令,根据表达式的…

vue实现表格多行修改

vue实现表格多行修改

实现多行编辑表格 在Vue中实现表格的多行编辑功能,可以通过以下方法完成。这里以Element UI的表格组件为例,但思路适用于其他UI库或原生实现。 数据准备 定义表格数据和编辑状态管理变量:…

vue实现全屏

vue实现全屏

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

vue实现刷卡

vue实现刷卡

Vue 实现刷卡效果 在 Vue 中实现刷卡效果可以通过 CSS 动画和 Vue 的过渡系统结合完成。以下是一种常见的实现方式: 基础实现方法 安装 Vue 过渡依赖(如果尚未安装): npm i…

vue 实现聊天

vue 实现聊天

使用 Vue 实现聊天功能 创建 Vue 项目并安装依赖 确保已安装 Vue CLI,通过以下命令创建新项目: vue create chat-app 进入项目目录后,安装必要的依赖(如 Socke…

vue实现联动

vue实现联动

Vue 实现联动效果 联动效果通常指多个组件或表单元素之间相互影响,例如选择省份后动态加载城市列表。Vue 提供了多种方式实现联动,包括数据绑定、计算属性、侦听器等。 数据驱动联动 通过 Vue 的…