当前位置:首页 > VUE

vue实现token

2026-01-12 20:07:06VUE

Vue 中实现 Token 验证的步骤

安装必要的依赖
使用 axios 进行 HTTP 请求,vue-router 处理路由守卫,js-cookie 管理 Cookie。通过 npm 安装:

npm install axios vue-router js-cookie

配置 Axios 拦截器
在请求头中自动添加 Token,并在响应拦截器中处理 Token 过期或无效的情况:

// src/utils/request.js
import axios from 'axios';
import Cookies from 'js-cookie';

const service = axios.create({
  baseURL: process.env.VUE_APP_BASE_API,
});

service.interceptors.request.use(
  config => {
    const token = Cookies.get('token');
    if (token) {
      config.headers['Authorization'] = `Bearer ${token}`;
    }
    return config;
  },
  error => {
    return Promise.reject(error);
  }
);

service.interceptors.response.use(
  response => {
    return response.data;
  },
  error => {
    if (error.response.status === 401) {
      // Token 过期或无效,跳转到登录页
      router.push('/login');
    }
    return Promise.reject(error);
  }
);

export default service;

登录逻辑与 Token 存储
用户登录成功后,将 Token 存储到 Cookie 或 localStorage,并跳转到主页:

// src/views/Login.vue
import Cookies from 'js-cookie';
import request from '@/utils/request';

export default {
  methods: {
    handleLogin() {
      request.post('/login', this.form)
        .then(res => {
          Cookies.set('token', res.token, { expires: 7 }); // 7 天过期
          this.$router.push('/');
        });
    }
  }
};

路由守卫验证 Token
通过全局前置守卫检查用户是否已登录,未登录则重定向到登录页:

// src/router/index.js
import router from './router';
import Cookies from 'js-cookie';

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

注销功能
清除 Token 并跳转到登录页:

// src/components/Logout.vue
import Cookies from 'js-cookie';

export default {
  methods: {
    handleLogout() {
      Cookies.remove('token');
      this.$router.push('/login');
    }
  }
};

关键注意事项

  • Token 安全:避免将 Token 存储在 localStorage 中以防止 XSS 攻击,优先使用 HttpOnly Cookie。
  • 过期处理:后端应返回 401 状态码,前端拦截后强制跳转登录页。
  • 刷新 Token:可通过定时任务或拦截器自动刷新 Token,减少用户重复登录。

vue实现token

标签: vuetoken
分享给朋友:

相关文章

vue前端实现搜索

vue前端实现搜索

实现搜索功能的基本方法 在Vue中实现搜索功能通常涉及以下几个关键步骤,结合数据绑定、计算属性和方法调用来动态过滤和显示结果。 数据绑定与输入处理 使用v-model双向绑定搜索输入框的值,监听用…

拖拽式编程vue实现

拖拽式编程vue实现

拖拽式编程在 Vue 中的实现方法 使用 HTML5 原生拖放 API Vue 可以结合 HTML5 的拖放 API 实现基础拖拽功能。通过 draggable 属性标记可拖拽元素,监听 dragst…

vue实现压缩上传文件

vue实现压缩上传文件

压缩上传文件的实现方法 在Vue中实现文件压缩和上传功能,可以通过以下步骤完成。该方法结合了前端文件压缩库和HTTP请求,确保文件在上传前被有效压缩。 安装必要的依赖 需要使用compressorj…

vue实现表格多行修改

vue实现表格多行修改

实现多行编辑表格 在Vue中实现表格的多行编辑功能,可以通过以下方法完成。这里以Element UI的表格组件为例,但思路适用于其他UI库或原生实现。 数据准备 定义表格数据和编辑状态管理变量:…

vue实现飘窗原理

vue实现飘窗原理

vue实现飘窗原理 飘窗效果通常指在页面上悬浮显示的弹窗或通知,跟随页面滚动或固定在某个位置。Vue实现这一效果主要依赖组件化开发、CSS定位和动态数据绑定。 组件结构设计 创建一个独立的Vue组…

vue实现用户信息表

vue实现用户信息表

Vue 实现用户信息表的方法 使用 Vue CLI 创建项目 安装 Vue CLI 并初始化项目: npm install -g @vue/cli vue create user-info-tab…