当前位置:首页 > VUE

vue jwt实现

2026-02-10 10:42:51VUE

Vue 中实现 JWT 认证的步骤

安装依赖

确保项目中安装 axiosvue-router。若需处理 JWT,可安装 jwt-decode 解析 token:

npm install axios vue-router jwt-decode

后端接口配置

后端需提供 JWT 签发和验证的接口,通常包括:

  • 登录接口(返回 JWT)
  • 受保护的数据接口(验证 JWT)

示例登录请求:

axios.post('/api/login', { username, password })
  .then(response => {
    const token = response.data.token;
    localStorage.setItem('jwt', token); // 存储 token
  });

前端路由守卫

vue-router 中配置全局前置守卫,验证 token 是否存在:

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

请求拦截器

通过 axios 拦截器自动为请求添加 JWT:

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

Token 过期处理

拦截响应,检测 401 错误并跳转登录页:

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

解析 JWT 数据

使用 jwt-decode 获取 token 中的用户信息:

import jwtDecode from 'jwt-decode';
const token = localStorage.getItem('jwt');
const decoded = jwtDecode(token);
console.log(decoded.userId);

注销功能

清除本地存储的 token 并重定向:

vue jwt实现

logout() {
  localStorage.removeItem('jwt');
  this.$router.push('/login');
}

注意事项

  • 避免将敏感信息存储在 JWT 中。
  • 使用 HTTPS 防止 token 被截获。
  • 设置合理的 token 过期时间。
  • 考虑实现 refresh token 机制延长会话。

标签: vuejwt
分享给朋友:

相关文章

vue实现验证码

vue实现验证码

Vue 实现验证码的方法 使用第三方库 安装 vue-captcha 或 vue-recaptcha 等第三方库,这些库提供了现成的验证码组件,可以直接集成到 Vue 项目中。以 vue-recapt…

vue实现博客

vue实现博客

Vue 实现博客的基本步骤 使用 Vue.js 实现一个博客系统可以分为前端和后端两部分。以下是基于 Vue 的前端实现方案,后端可以选择 Node.js、Django 或其他框架。 项目初始化 使…

vue实现portal

vue实现portal

Vue 实现 Portal 功能 Portal 是一种将子节点渲染到父组件 DOM 层级之外的 DOM 节点的技术,常用于实现模态框、弹出层等需要脱离当前组件层级的场景。Vue 可以通过多种方式实现…

vue 实现评分

vue 实现评分

Vue 实现评分功能 在 Vue 中实现评分功能可以通过多种方式完成,包括使用第三方组件库或自定义实现。以下是两种常见的方法: 使用第三方组件库(如 Element UI) Element UI 提…

vue实现api

vue实现api

Vue 实现 API 调用 在 Vue 中调用 API 通常涉及使用 axios 或 fetch 发送 HTTP 请求,并结合 Vue 的响应式特性管理数据。以下是常见的实现方式: 安装 axios…

vue实现录音

vue实现录音

Vue 实现录音功能 在 Vue 中实现录音功能可以通过浏览器提供的 MediaRecorder API 完成。以下是具体实现方法: 引入依赖 确保项目支持现代浏览器 API,无需额外安装库…