当前位置:首页 > VUE

vue jwt实现

2026-03-27 20:26:33VUE

Vue 中实现 JWT 认证

安装依赖

需要安装 jsonwebtokenaxios 用于生成/验证令牌和发起 HTTP 请求。通过 npm 或 yarn 安装:

npm install jsonwebtoken axios

后端配置

确保后端支持 JWT 签发和验证。常见后端框架(如 Node.js + Express)需配置:

  • 登录接口返回 JWT
  • 其他接口验证 JWT 有效性 示例 Node.js 签发代码:
    const jwt = require('jsonwebtoken');
    const token = jwt.sign({ userId: user.id }, 'your_secret_key', { expiresIn: '1h' });

前端登录处理

在登录组件中,通过 axios 发送凭证并存储返回的 JWT:

axios.post('/api/login', { email, password })
  .then(response => {
    localStorage.setItem('jwt', response.data.token);
    router.push('/dashboard');
  });

请求拦截

通过 axios 拦截器自动附加 JWT 到请求头:

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

路由守卫

使用 Vue Router 的导航守卫保护受限路由:

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

令牌刷新

处理 JWT 过期时自动刷新:

vue jwt实现

axios.interceptors.response.use(
  response => response,
  error => {
    if (error.response.status === 401) {
      return axios.post('/api/refresh', { token: localStorage.getItem('jwt') })
        .then(res => {
          localStorage.setItem('jwt', res.data.token);
          error.config.headers.Authorization = `Bearer ${res.data.token}`;
          return axios.request(error.config);
        });
    }
    return Promise.reject(error);
  }
);

安全注意事项

  • 避免在客户端存储敏感信息
  • 使用 HTTPS 传输
  • 设置合理的令牌过期时间
  • 实现服务端黑名单机制

以上步骤可实现完整的 JWT 认证流程,包含登录、令牌管理、路由保护和自动刷新功能。

标签: vuejwt
分享给朋友:

相关文章

antd vue 实现

antd vue 实现

使用 Ant Design Vue 实现功能 Ant Design Vue 是基于 Vue.js 的 UI 组件库,提供了丰富的组件和设计规范。以下是一些常见功能的实现方法。 安装 Ant Desi…

vue实现编辑

vue实现编辑

Vue 实现编辑功能 在 Vue 中实现编辑功能通常涉及表单绑定、状态管理和事件处理。以下是一个常见的实现方法: 双向数据绑定 使用 v-model 指令实现表单元素与数据的双向绑定: <i…

vue 实现轮播

vue 实现轮播

Vue 实现轮播的方法 使用第三方库(如 Swiper) 安装 Swiper 库: npm install swiper 在 Vue 组件中引入 Swiper: <template>…

vue nexttick实现

vue nexttick实现

Vue 中 nextTick 的实现原理 Vue 的 nextTick 是一个用于在下次 DOM 更新循环结束之后执行延迟回调的方法。它的核心实现依赖于 JavaScript 的事件循环机制。 基本…

vue 实现评分

vue 实现评分

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

vue实现发帖

vue实现发帖

使用 Vue 实现发帖功能 前端实现 创建发帖表单组件,包含标题和内容输入框,以及提交按钮。使用 v-model 绑定表单数据。 <template> <div>…