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

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 并重定向到登录页:

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 可以增加安全性。

vue 实现token登录

性能优化

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

标签: vuetoken
分享给朋友:

相关文章

vue实现开关

vue实现开关

Vue 实现开关组件的方法 使用原生HTML和Vue数据绑定 通过v-model绑定复选框的checked状态,结合CSS样式实现开关效果: <template> <label…

vue 实现工具

vue 实现工具

Vue 实现工具的方法 使用 Vue 实现工具功能可以通过多种方式完成,具体取决于工具的类型和需求。以下是几种常见的方法: 组件化实现 创建一个独立的 Vue 组件来封装工具功能。例如,实现一个计…

vue实现portal

vue实现portal

Vue 实现 Portal 功能 Portal 是一种将子节点渲染到父组件 DOM 层级之外的 DOM 节点的技术,常用于实现模态框、弹出层等需要脱离当前组件层级的场景。Vue 可以通过多种方式实现…

vue实现swipe

vue实现swipe

Vue实现Swipe功能的方法 使用第三方库(推荐) Vue生态中有多个成熟的轮播/滑动组件库,例如vue-awesome-swiper或swiper/vue。以下是基于swiper/vue的实现示例…

vue实现list

vue实现list

Vue 实现列表渲染 在 Vue 中,可以使用 v-for 指令来渲染列表。v-for 指令基于一个数组或对象来渲染一个列表,可以遍历数组或对象的属性。 基本列表渲染 <template>…

vue实现弹幕

vue实现弹幕

Vue 实现弹幕功能 弹幕功能通常包括动态生成、滚动显示、颜色和速度随机化等特性。以下是基于 Vue 3 的实现方法。 核心思路 使用 CSS 动画控制弹幕从右向左滚动。 动态生成弹幕数据,随机设置…