当前位置:首页 > VUE

vue jwt实现

2026-01-07 23:45:03VUE

Vue JWT 实现方法

安装依赖

确保项目中安装了 jsonwebtoken(后端)和 axios(前端)。若使用 Vue 3,可搭配 vue-routerpinia(或 vuex)管理状态。

npm install jsonwebtoken axios

后端生成 JWT

在后端(如 Node.js)使用 jsonwebtoken 生成 Token。示例代码:

const jwt = require('jsonwebtoken');
const secret = 'your_secret_key';

function generateToken(user) {
  return jwt.sign({ id: user.id, username: user.username }, secret, { expiresIn: '1h' });
}

前端存储 Token

登录成功后,将后端返回的 Token 存储到 localStoragesessionStorage,并通过 axios 拦截器附加到请求头。

// 存储 Token
localStorage.setItem('jwtToken', token);

// axios 拦截器配置
axios.interceptors.request.use(config => {
  const token = localStorage.getItem('jwtToken');
  if (token) {
    config.headers.Authorization = `Bearer ${token}`;
  }
  return config;
});

路由守卫验证

在 Vue Router 中配置全局前置守卫,验证 Token 是否存在及有效性。

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

Token 过期处理

通过拦截响应检查 Token 是否过期,若过期则跳转到登录页。

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

注销清除 Token

用户注销时清除存储的 Token。

vue jwt实现

function logout() {
  localStorage.removeItem('jwtToken');
  router.push('/login');
}

注意事项

  • 密钥安全:后端应妥善保管 JWT 密钥,避免泄露。
  • HTTPS:生产环境务必使用 HTTPS 传输 Token。
  • 短有效期:建议设置较短的 Token 有效期(如 1 小时),并通过 Refresh Token 机制续期。

标签: vuejwt
分享给朋友:

相关文章

vue架构实现

vue架构实现

Vue 架构实现核心方案 Vue.js 的架构实现通常围绕模块化、组件化和状态管理展开。以下为常见实现方案: 基于单文件组件(SFC)的模块化 通过 .vue 文件组织模板、脚本和样式: <…

vue实现抽奖

vue实现抽奖

Vue 实现抽奖功能 基本抽奖逻辑 创建一个Vue组件,包含奖品列表、抽奖按钮和结果显示区域。使用随机数生成器选择奖品。 <template> <div> <…

vue 实现登录

vue 实现登录

Vue 实现登录功能 创建登录表单组件 在 Vue 项目中创建一个登录表单组件(如 Login.vue),包含用户名和密码输入框以及提交按钮。使用 v-model 实现双向数据绑定。 <tem…

vue实现增加

vue实现增加

实现 Vue 中的新增功能 在 Vue 中实现新增功能通常涉及数据绑定、表单处理和状态管理。以下是几种常见的实现方式: 数据绑定与列表渲染 通过 v-model 绑定表单输入,使用数组的 push…

vue实现横滚

vue实现横滚

Vue 实现横滚效果 横滚效果通常指水平滚动内容,常见于轮播图、横向导航栏等场景。以下是几种实现方式: 使用 CSS 和 Vue 结合 通过 CSS 的 overflow-x 和 white-spa…

vue 实现table

vue 实现table

Vue 实现 Table 的方法 使用原生 HTML 表格 通过 Vue 的 v-for 指令动态渲染表格数据,适合简单表格场景。 <template> <table>…