当前位置:首页 > VUE

vue实现jwt

2026-02-10 09:18:03VUE

Vue 中实现 JWT 认证的步骤

安装依赖 需要安装 jsonwebtokenaxios 用于生成/验证 Token 和发起 HTTP 请求:

npm install jsonwebtoken axios

后端生成 JWT Node.js 后端示例(如 Express)生成 Token:

vue实现jwt

const jwt = require('jsonwebtoken');
const secret = 'your-secret-key';

app.post('/login', (req, res) => {
  const user = { id: 1, username: 'example' };
  const token = jwt.sign(user, secret, { expiresIn: '1h' });
  res.json({ token });
});

前端存储 Token 登录成功后存储 Token 至 localStorage 或 Vuex:

axios.post('/login', credentials)
  .then(response => {
    localStorage.setItem('jwt_token', response.data.token);
  });

请求拦截器 通过 axios 拦截器在请求头添加 Token:

vue实现jwt

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

Token 验证 前端可通过 jwt-decode 解析 Token 判断是否过期:

import jwtDecode from 'jwt-decode';

const token = localStorage.getItem('jwt_token');
if (token) {
  const decoded = jwtDecode(token);
  const isExpired = decoded.exp < Date.now() / 1000;
  if (isExpired) localStorage.removeItem('jwt_token');
}

路由守卫 Vue Router 中配置全局前置守卫保护路由:

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

注意事项

  • 敏感操作需后端二次验证 Token 有效性
  • 避免在 Token 中存储敏感信息
  • HTTPS 环境下使用 JWT
  • 设置合理的 Token 过期时间

标签: vuejwt
分享给朋友:

相关文章

vue 实现

vue 实现

Vue 实现的基本步骤 安装 Vue.js 可以通过 npm 或 CDN 引入。使用 npm 安装适合大型项目,CDN 适合快速原型开发。 npm install vue 在 HTML 文件中引入…

vue 动画 实现

vue 动画 实现

vue 动画实现方法 Vue 提供了多种方式实现动画效果,主要包括过渡动画和动态动画两类。 使用 <transition> 组件实现基础过渡 通过 Vue 内置的 <transit…

vue实现数组

vue实现数组

Vue 实现数组操作的方法 在 Vue 中,数组的操作需要特别注意响应式的问题。Vue 提供了一些方法来确保数组的变动能够触发视图更新。 响应式数组方法 Vue 对以下数组方法进行了封装,确保它们能…

vue 实现拖拉

vue 实现拖拉

Vue 实现拖拽功能的方法 使用 HTML5 原生拖放 API HTML5 提供了原生的拖放 API,可以通过 draggable 属性、dragstart、dragend、dragover 和 dr…

vue拖动实现

vue拖动实现

实现 Vue 拖动功能的方法 使用 HTML5 拖放 API 在 Vue 中可以利用 HTML5 的原生拖放 API 实现拖动功能。通过 draggable 属性标记可拖动元素,结合 @dragsta…

vue实现curd

vue实现curd

Vue实现CRUD操作 初始化Vue项目 使用Vue CLI创建新项目,安装必要依赖如axios用于HTTP请求 vue create crud-demo cd crud-demo npm inst…