当前位置:首页 > VUE

vue 实现token登录

2026-01-18 21:32:43VUE

Vue 实现 Token 登录

登录流程设计

用户提交登录表单后,前端将用户名和密码发送到后端验证。后端验证成功后返回一个 Token,前端保存该 Token 并在后续请求中携带。

使用 Axios 拦截器在每次请求头中添加 Token:

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

Token 存储方案

将 Token 存储在本地 localStorage 或 sessionStorage 中:

localStorage.setItem('token', response.data.token);

从存储中获取 Token:

vue 实现token登录

const token = localStorage.getItem('token');

路由守卫配置

在 Vue Router 中配置全局前置守卫,检查用户是否已登录:

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

退出登录处理

清除本地存储的 Token 并重定向到登录页:

vue 实现token登录

logout() {
  localStorage.removeItem('token');
  this.$router.push('/login');
}

Token 过期处理

在响应拦截器中检查 Token 是否过期:

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

完整示例代码

登录组件示例:

<template>
  <form @submit.prevent="login">
    <input v-model="username" placeholder="Username">
    <input v-model="password" type="password" placeholder="Password">
    <button type="submit">Login</button>
  </form>
</template>

<script>
export default {
  data() {
    return {
      username: '',
      password: ''
    };
  },
  methods: {
    async login() {
      try {
        const response = await axios.post('/api/login', {
          username: this.username,
          password: this.password
        });
        localStorage.setItem('token', response.data.token);
        this.$router.push('/dashboard');
      } catch (error) {
        console.error('Login failed:', error);
      }
    }
  }
};
</script>

安全注意事项

避免将敏感信息存储在 Token 中,Token 应该是一个随机生成的字符串。确保使用 HTTPS 协议传输 Token,防止中间人攻击。定期刷新 Token 可以增加安全性。

性能优化

对于频繁的 API 请求,可以考虑实现 Token 自动刷新机制。当 Token 即将过期时,使用 refresh token 获取新的 access token,减少用户需要重新登录的次数。

标签: vuetoken
分享给朋友:

相关文章

vue实现简单的弹窗

vue实现简单的弹窗

使用 Vue 实现简单弹窗 组件基础结构 创建一个名为 Modal.vue 的组件文件,包含模板、脚本和样式部分: <template> <div class="modal-o…

vue使用vr实现标注

vue使用vr实现标注

Vue 中使用 VR 实现标注的方法 在 Vue 项目中结合 VR 技术实现标注功能,可以通过 WebXR 和 Three.js 等库实现。以下为具体实现方法: 安装依赖 确保项目中已安装 Thre…

vue实现多选题

vue实现多选题

Vue实现多选题的方法 使用Vue实现多选题功能,可以通过v-model绑定数组、动态渲染选项、以及处理选中状态来实现。以下是一个完整的实现示例: 基础实现代码 <template>…

vue实现3d宇宙

vue实现3d宇宙

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

vue实现删除

vue实现删除

Vue 实现删除功能的方法 在 Vue 中实现删除功能通常涉及以下几个步骤: 数据绑定与列表渲染 使用 v-for 指令渲染列表数据,并为每个项绑定唯一标识符(如 id)。例如: <…

vue实现route

vue实现route

Vue 路由实现方法 Vue 中实现路由通常使用 vue-router 库,这是 Vue 官方推荐的路由管理器。以下是具体实现步骤: 安装 vue-router 通过 npm 或 yarn 安装…