当前位置:首页 > VUE

vue axios实现登录

2026-02-19 05:11:38VUE

安装 axios 依赖

在项目根目录下运行以下命令安装 axios:

npm install axios

创建 axios 实例

src 目录下新建 utils/request.js 文件,配置基础请求实例:

import axios from 'axios';

const service = axios.create({
  baseURL: 'https://your-api-domain.com', // 替换为实际接口地址
  timeout: 5000,
});

// 请求拦截器(添加token等)
service.interceptors.request.use(
  (config) => {
    const token = localStorage.getItem('token');
    if (token) {
      config.headers.Authorization = `Bearer ${token}`;
    }
    return config;
  },
  (error) => {
    return Promise.reject(error);
  }
);

// 响应拦截器(处理错误码等)
service.interceptors.response.use(
  (response) => {
    return response.data;
  },
  (error) => {
    if (error.response.status === 401) {
      // 处理未授权逻辑(如跳转登录页)
    }
    return Promise.reject(error);
  }
);

export default service;

编写登录 API

src/api 目录下创建 auth.js,定义登录接口:

import request from '@/utils/request';

export function login(data) {
  return request({
    url: '/login',
    method: 'post',
    data,
  });
}

实现登录页面逻辑

在登录组件中调用接口并处理结果:

import { login } from '@/api/auth';

export default {
  data() {
    return {
      form: {
        username: '',
        password: '',
      },
    };
  },
  methods: {
    handleLogin() {
      login(this.form)
        .then((res) => {
          localStorage.setItem('token', res.token);
          this.$router.push('/dashboard'); // 跳转到首页
        })
        .catch((error) => {
          console.error('登录失败:', error);
        });
    },
  },
};

模板部分示例

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

关键注意事项

  • 确保后端接口支持跨域(或配置代理)
  • 生产环境需使用 HTTPS 并启用 CSRF 防护
  • 敏感数据(如 token)建议结合 Vuex 或 Pinia 管理

错误处理扩展

可根据业务需求在响应拦截器中补充逻辑:

vue axios实现登录

service.interceptors.response.use(
  (response) => {
    if (response.data.code !== 200) {
      return Promise.reject(new Error(response.data.message));
    }
    return response.data;
  }
);

标签: vueaxios
分享给朋友:

相关文章

vue实现遮罩

vue实现遮罩

Vue 实现遮罩层的方法 在 Vue 中实现遮罩层可以通过多种方式完成,以下是几种常见的方法: 方法一:使用 v-show 或 v-if 控制显示 通过 Vue 的指令动态控制遮罩层的显示与隐藏。…

vue实现switch

vue实现switch

Vue 实现 Switch 开关组件 在 Vue 中实现 Switch 开关组件可以通过自定义组件或使用现有 UI 库完成。以下是几种常见实现方式: 自定义 Switch 组件 创建一个基础 Sw…

vue实现rtc

vue实现rtc

Vue 实现 RTC 的步骤 安装依赖 在 Vue 项目中安装 WebRTC 相关依赖,如 simple-peer 或 peerjs,用于简化 WebRTC 的实现。 运行以下命令安装 simple-…

vue实现动画

vue实现动画

Vue 实现动画的方法 Vue 提供了多种方式来实现动画效果,包括内置的过渡系统、第三方动画库以及直接操作 CSS 或 JavaScript 动画。 使用 Vue 内置过渡系统 Vue 的 <…

vue实现答辩

vue实现答辩

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

vue实现ppt

vue实现ppt

Vue 实现 PPT 的功能 Vue 可以结合第三方库或自定义组件实现类似 PPT 的演示效果。以下是几种常见的方法: 使用第三方库 reveal.js reveal.js 是一个流行的演示框架,支…