当前位置:首页 > VUE

vue 实现token 登录

2026-03-28 07:57:26VUE

实现 Token 登录的基本流程

在 Vue 中实现 Token 登录通常涉及以下几个关键步骤:用户登录验证、Token 存储、请求拦截和权限控制。以下是具体实现方法。

用户登录与 Token 获取

通过登录接口发送用户名和密码,后端验证成功后返回 Token(通常为 JWT)。使用 axios 或其他 HTTP 库发送请求:

import axios from 'axios';

const login = async (username, password) => {
  try {
    const response = await axios.post('/api/login', { username, password });
    const token = response.data.token;
    localStorage.setItem('token', token); // 存储 Token
    axios.defaults.headers.common['Authorization'] = `Bearer ${token}`; // 设置请求头
    return true;
  } catch (error) {
    console.error('登录失败:', error);
    return false;
  }
};

Token 存储与请求拦截

将 Token 存储在 localStoragesessionStorage 中,并通过 axios 拦截器自动附加到后续请求的头部:

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

路由守卫与权限控制

使用 Vue Router 的全局前置守卫 (beforeEach) 检查 Token,限制未登录用户访问受保护路由:

import router from './router';

router.beforeEach((to, from, next) => {
  const isProtectedRoute = to.matched.some(record => record.meta.requiresAuth);
  const token = localStorage.getItem('token');

  if (isProtectedRoute && !token) {
    next('/login'); // 跳转到登录页
  } else {
    next(); // 放行
  }
});

Token 过期与刷新

如果 Token 有过期时间,可以通过拦截响应检查 401 错误,并尝试刷新 Token:

axios.interceptors.response.use(response => response, async error => {
  if (error.response.status === 401) {
    const refreshToken = localStorage.getItem('refreshToken');
    if (refreshToken) {
      try {
        const res = await axios.post('/api/refresh', { refreshToken });
        localStorage.setItem('token', res.data.token);
        error.config.headers.Authorization = `Bearer ${res.data.token}`;
        return axios(error.config); // 重试原请求
      } catch (e) {
        localStorage.removeItem('token');
        router.push('/login');
      }
    }
  }
  return Promise.reject(error);
});

退出登录处理

清除本地存储的 Token 并重置 axios 的请求头:

vue 实现token 登录

const logout = () => {
  localStorage.removeItem('token');
  delete axios.defaults.headers.common['Authorization'];
  router.push('/login');
};

通过以上方法,可以完整实现 Vue 中的 Token 登录机制,包括登录验证、权限控制和 Token 管理。

标签: vuetoken
分享给朋友:

相关文章

vue实现a

vue实现a

Vue 实现 A 功能的方法 在 Vue 中实现 A 功能可以通过多种方式,具体取决于 A 功能的具体需求。以下是几种常见的实现方法: 使用 Vue 组件 通过创建自定义组件来实现 A 功能。组件可…

vue实现toggle

vue实现toggle

Vue 实现 Toggle 功能 在 Vue 中实现 toggle(切换)功能可以通过多种方式完成,以下是几种常见的方法: 使用 v-model 和 v-on 通过 v-model 绑定数据,结合…

tabbar 实现 vue

tabbar 实现 vue

在 Vue 中实现 TabBar 功能可以通过多种方式完成,以下是几种常见的方法: 使用 Vue Router 结合自定义组件 创建一个自定义的 TabBar 组件,结合 Vue Route…

vue实现日历

vue实现日历

Vue 实现日历的基本方法 使用 Vue 实现日历可以通过自定义组件或借助第三方库完成。以下是两种常见实现方式: 自定义日历组件 创建基于 Vue 的日历组件需要处理日期计算和渲染逻辑。核心是生成当…

vue 菜单实现

vue 菜单实现

Vue 菜单实现方法 在Vue中实现菜单功能可以通过多种方式完成,以下是几种常见的实现方法: 使用v-for动态生成菜单 通过数据驱动的方式动态渲染菜单项,适合菜单内容可能变化的场景: <t…

vue nexttrick实现

vue nexttrick实现

Vue 中 nextTick 的实现原理 nextTick 是 Vue 提供的一个异步方法,用于在下次 DOM 更新循环结束之后执行延迟回调。它利用了 JavaScript 的事件循环机制,确保回调在…