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

vue实现muli

Vue 实现多语言(i18n)支持 在 Vue 项目中实现多语言(i18n)功能,通常使用 vue-i18n 插件。以下是具体实现步骤: 安装 vue-i18n npm install vue…

vue实现bootstrap

vue实现bootstrap

Vue 中集成 Bootstrap 的方法 在 Vue 项目中集成 Bootstrap 可以通过以下方式实现,涵盖样式、组件和交互功能。 安装 Bootstrap 依赖 通过 npm 或 yarn…

vue SSG实现

vue SSG实现

Vue SSG 实现方法 Vue 的静态站点生成(SSG)可以通过多种工具和框架实现,以下是几种常见的方法: 使用 VuePress VuePress 是一个基于 Vue 的静态站点生成器,适合文档…

vue实现handsontable

vue实现handsontable

Vue 中实现 Handsontable 要在 Vue 项目中集成 Handsontable,可以使用官方提供的 @handsontable/vue 封装库。以下是一个完整的实现步骤。 安装依赖 确…

vue 实现回复

vue 实现回复

Vue 实现回复功能 在 Vue 中实现回复功能通常涉及表单提交、数据绑定和列表渲染。以下是实现步骤和代码示例: 数据绑定与表单 <template> <div>…

vue实现单据

vue实现单据

Vue 实现单据功能的方法 使用 Vue 实现单据功能通常涉及表单设计、数据绑定、验证和提交等环节。以下是具体实现方案: 表单设计与数据绑定 使用 Vue 的 v-model 指令实现表单数据的双向…