当前位置:首页 > VUE

vue 实现token 登录

2026-03-07 21:47:43VUE

实现 Token 登录的流程

Token 登录是一种常见的身份验证方式,通常用于前后端分离的项目中。以下是基于 Vue 实现 Token 登录的详细方法。

登录接口调用

在 Vue 中,可以使用 Axios 或其他 HTTP 库发送登录请求。登录成功后,后端会返回一个 Token,需要将其存储到本地(如 localStorage 或 sessionStorage)。

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);
    return token;
  } catch (error) {
    console.error('登录失败:', error);
    throw error;
  }
};

存储 Token

登录成功后,将 Token 存储到本地,以便后续请求时使用。通常使用 localStoragesessionStorage

vue 实现token 登录

localStorage.setItem('token', token);

请求拦截器

在每次发送请求时,将 Token 添加到请求头中。可以通过 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);
});

响应拦截器

处理响应时,检查 Token 是否过期或无效。如果 Token 无效,可以跳转到登录页面。

vue 实现token 登录

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

路由守卫

在 Vue Router 中配置路由守卫,检查用户是否已登录。如果未登录,则跳转到登录页面。

import router from './router';

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

注销登录

注销时,清除本地存储的 Token 并跳转到登录页面。

const logout = () => {
  localStorage.removeItem('token');
  window.location.href = '/login';
};

完整示例

以下是一个完整的 Vue 组件示例,实现 Token 登录功能。

<template>
  <div>
    <form @submit.prevent="handleLogin">
      <input v-model="username" placeholder="用户名" />
      <input v-model="password" type="password" placeholder="密码" />
      <button type="submit">登录</button>
    </form>
  </div>
</template>

<script>
import axios from 'axios';

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

注意事项

  • Token 应存储在安全的地方,避免被恶意脚本窃取。
  • 后端应设置 Token 的过期时间,并定期刷新 Token。
  • 敏感操作(如支付、修改密码)应进行二次验证。

通过以上步骤,可以在 Vue 项目中实现基于 Token 的登录功能。

标签: vuetoken
分享给朋友:

相关文章

vue实现冰墩墩

vue实现冰墩墩

使用 Vue 实现冰墩墩动画 通过 Vue 的动画特性和 SVG 技术,可以动态渲染冰墩墩的形象。以下是具体实现方法: 准备 SVG 素材 冰墩墩的形象通常由多个 SVG 路径组成,包括身体轮廓、面…

vue实现后退

vue实现后退

Vue 实现后退功能的方法 在 Vue 中实现后退功能通常可以通过以下几种方式完成,具体取决于应用场景和需求。 使用 window.history API 通过原生 JavaScript 的 win…

vue实现route

vue实现route

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

vue实现监听

vue实现监听

监听数据变化 在Vue中,可以通过watch选项或$watch方法监听数据的变化。watch适用于组件选项内声明式监听,$watch适用于动态监听。 // 选项式API export default…

vue轮播实现

vue轮播实现

Vue 轮播实现方法 使用第三方库(推荐) 安装 swiper 或 vue-awesome-swiper 库,快速实现功能丰富的轮播效果。 以 vue-awesome-swiper 为例: npm…

vue实现路径

vue实现路径

Vue 实现路径的方法 在 Vue 中实现路径管理通常涉及 Vue Router 的使用,以下是一些常见的实现方法: 安装 Vue Router 通过 npm 或 yarn 安装 Vue Route…