当前位置:首页 > 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实现通知

vue实现通知

Vue 实现通知功能的方法 使用 Vue 实现通知功能可以通过多种方式实现,以下是一些常见的方法: 使用 Vue 的全局事件总线 在 Vue 中可以通过事件总线实现通知功能。创建一个全局事件总线,然…

vue页面实现

vue页面实现

Vue 页面实现方法 创建 Vue 组件 使用 Vue 单文件组件(SFC)方式创建页面,文件扩展名为 .vue。一个基本的 Vue 组件包含三个部分:模板(template)、脚本(script)和…

vue实现Siri

vue实现Siri

Vue 实现 Siri 风格语音交互 实现类似 Siri 的语音交互功能需要结合语音识别、语音合成和前端交互逻辑。Vue 作为前端框架,可以很好地管理这些功能的交互状态。 语音识别集成 使用 Web…

vue实现api

vue实现api

Vue 实现 API 调用 在 Vue 中调用 API 通常涉及使用 axios 或 fetch 发送 HTTP 请求,并结合 Vue 的响应式特性管理数据。以下是常见的实现方式: 安装 axios…

vue实现树形

vue实现树形

Vue 实现树形组件 在 Vue 中实现树形结构通常需要递归组件和动态数据绑定。以下是实现树形组件的几种常见方法。 递归组件实现 递归组件是 Vue 中实现树形结构的核心方法。通过组件调用自身,可以…

vue打包实现推送

vue打包实现推送

Vue 项目打包与自动化部署推送 打包 Vue 项目 使用以下命令生成生产环境代码,默认输出到 dist 目录: npm run build 配置自动化推送(以 GitHub Pages 为例)…