当前位置:首页 > 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 实现评分功能 使用组件库实现 安装 element-ui 或 ant-design-vue 这类 UI 库,它们已经内置了评分组件。 以 element-ui 为例: <templa…

vue 实现ztree

vue 实现ztree

在Vue中实现类似ZTree的功能,可以通过集成第三方库或自定义组件完成。以下是两种常见方法: 使用vue-tree组件 vue-tree是一个轻量级的Vue树形组件,支持复选框、懒加载等功能,适合…

vue 实现单点登录

vue 实现单点登录

单点登录(SSO)实现原理 单点登录允许用户通过一次身份验证访问多个系统。核心原理是用户首次登录后,认证中心颁发令牌(如Token),其他系统通过验证令牌实现免登录。 Vue中实现SSO的方案 基于…

vue实现肢体识别

vue实现肢体识别

Vue 中实现肢体识别的方法 在 Vue 项目中实现肢体识别通常需要结合第三方库或 API,例如 TensorFlow.js、MediaPipe 或 OpenCV。以下是几种常见的实现方式: 使用…

vue实现左右菜单联动实现

vue实现左右菜单联动实现

Vue 实现左右菜单联动 使用事件总线通信 在 Vue 中可以通过事件总线实现左右菜单的通信。创建一个中央事件总线实例,让左右菜单通过事件监听和触发实现联动。 // eventBus.js impo…

vue  怎么实现双击

vue 怎么实现双击

实现双击事件的方法 在 Vue 中实现双击事件可以通过 @dblclick 指令或自定义逻辑实现。以下是两种常见方法: 使用 @dblclick 指令 Vue 提供了原生 @dblclick…