当前位置:首页 > 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实现a4打印模板

vue实现a4打印模板

使用Vue实现A4打印模板 在Vue中实现A4打印模板需要结合CSS的打印样式和Vue的模板渲染能力。以下是具体实现方法: 设置A4纸张尺寸 在CSS中定义A4纸张的标准尺寸(210mm × 297…

vue实现流程

vue实现流程

Vue 实现流程的基本步骤 安装 Vue.js 可以通过 CDN 引入或使用 npm/yarn 安装。 CDN 方式: <script src="https://cdn.jsdelivr.…

vue实现muli

vue实现muli

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

vue实现答辩

vue实现答辩

Vue 实现答辩系统的关键步骤 项目初始化与配置 使用 Vue CLI 或 Vite 创建项目,安装 Vue Router 管理路由,Pinia/Vuex 进行状态管理。配置 ESLint 和 Pre…

vue实现双向

vue实现双向

Vue 实现双向绑定的方法 Vue 的双向绑定主要通过 v-model 指令实现,它结合了数据绑定和事件监听,适用于表单元素(如 input、select、textarea 等)。以下是几种常见的实现…

vue实现 hover

vue实现 hover

实现 Vue 中的 hover 效果 在 Vue 中实现 hover 效果可以通过多种方式完成,以下是常见的几种方法: 使用 CSS 伪类 最简单的方式是直接使用 CSS 的 :hover 伪类,无…