当前位置:首页 > VUE

vue实现jwt

2026-01-13 01:58:49VUE

Vue 中实现 JWT 认证的步骤

安装依赖 需要安装 axios 用于 HTTP 请求和 jsonwebtoken 用于 JWT 解码(前端通常只需存储和发送 Token,解码更多由后端完成)。

npm install axios jsonwebtoken

登录请求与 Token 存储 在登录页面中,通过 API 请求获取 JWT Token 并存储到本地(如 localStorage 或 Vuex)。

import axios from 'axios';

export default {
  methods: {
    async login() {
      try {
        const response = await axios.post('/api/login', {
          username: this.username,
          password: this.password
        });
        const token = response.data.token;
        localStorage.setItem('jwt_token', token);
        axios.defaults.headers.common['Authorization'] = `Bearer ${token}`;
        this.$router.push('/dashboard');
      } catch (error) {
        console.error('Login failed:', error);
      }
    }
  }
};

请求拦截器 通过 axios 拦截器自动为每个请求添加 Authorization 头。

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

路由守卫 使用 Vue Router 的导航守卫保护需要认证的路由。

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

Token 过期处理 在响应拦截器中检查 Token 是否过期(需后端返回特定状态码,如 401)。

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

注意事项

  • 安全性:避免在客户端存储敏感信息,JWT 应通过 HttpOnly Cookie 或安全存储方式传递。
  • 后端协作:确保后端正确配置 CORS 和 JWT 签发/验证逻辑。
  • 刷新 Token:实现无感刷新机制,通过拦截 401 错误并尝试用 Refresh Token 获取新 Token。

示例代码结构

src/
├── utils/
│   └── auth.js       # 封装 Token 操作
├── router/
│   └── index.js      # 路由守卫配置
├── services/
│   └── api.js        # axios 实例与拦截器
└── views/
    ├── Login.vue     # 登录页面
    └── Dashboard.vue # 受保护页面

vue实现jwt

标签: vuejwt
分享给朋友:

相关文章

vue设计与实现下载

vue设计与实现下载

vue设计与实现电子书下载 《Vue.js设计与实现》是一本深入解析Vue.js框架原理的书籍,由霍春阳(HcySunYang)撰写。以下是获取该资源的常见途径: 正版购买渠道 京东、当当、天…

vue实现3d宇宙

vue实现3d宇宙

Vue实现3D宇宙效果 使用Three.js库 Three.js是一个强大的JavaScript 3D库,可以轻松集成到Vue项目中。安装Three.js依赖: npm install three…

vue实现分屏

vue实现分屏

Vue 实现分屏的方法 分屏功能通常用于展示多个独立内容区域,以下是几种常见的实现方式: 使用 CSS Grid 布局 通过 CSS Grid 可以轻松创建分屏布局,在 Vue 组件中直接应用样式…

vue实现点击

vue实现点击

实现点击事件的基本方法 在Vue中实现点击事件可以通过v-on指令或@简写方式绑定。以下是常见的点击事件绑定方法: <template> <button v-on:click…

antd vue 实现

antd vue 实现

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

vue实现frame

vue实现frame

Vue 中实现 iframe 的方法 在 Vue 中可以通过直接使用 <iframe> 标签或动态绑定 src 属性来实现 iframe 功能。 基本用法 <template…