当前位置:首页 > VUE

vue axios 实现登录

2026-02-18 12:54:29VUE

安装 Axios

在 Vue 项目中安装 Axios 依赖:

npm install axios

创建 Axios 实例

src 目录下创建 api 文件夹,并新建 axios.js 文件,配置基础请求实例:

import axios from 'axios';

const instance = axios.create({
  baseURL: 'https://your-api-domain.com/api',
  timeout: 5000,
});

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

// 响应拦截器
instance.interceptors.response.use(
  response => {
    return response.data;
  },
  error => {
    if (error.response.status === 401) {
      // 处理 token 过期或未授权
      localStorage.removeItem('token');
      window.location.href = '/login';
    }
    return Promise.reject(error);
  }
);

export default instance;

登录接口封装

api 文件夹下新建 auth.js,封装登录方法:

vue axios 实现登录

import axios from './axios';

export const login = (data) => {
  return axios.post('/login', data);
};

登录页面实现

在 Vue 组件中调用登录接口(以 Login.vue 为例):

<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>

<script>
import { login } from '@/api/auth';

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

路由守卫配置

router/index.js 中配置全局路由守卫,实现权限控制:

vue axios 实现登录

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

环境变量配置

在项目根目录创建 .env 文件,管理 API 基础地址:

VUE_APP_API_BASE_URL=https://your-api-domain.com/api

修改 axios.js 中的 baseURL 为动态配置:

baseURL: process.env.VUE_APP_API_BASE_URL,

标签: vueaxios
分享给朋友:

相关文章

vue实现公式

vue实现公式

在Vue中实现公式展示或计算可以通过多种方式实现,以下为具体方法: 使用模板插值与计算属性 若公式较简单,可直接在模板中使用插值表达式或计算属性。例如计算圆的面积: <templat…

vue实现删除

vue实现删除

Vue 实现删除功能的方法 在 Vue 中实现删除功能通常涉及以下几个步骤: 数据绑定与列表渲染 使用 v-for 指令渲染列表数据,并为每个项绑定唯一标识符(如 id)。例如: <…

vue实现fullpage

vue实现fullpage

Vue 实现 FullPage 效果 在 Vue 中实现全屏滚动(FullPage)效果可以通过多种方式完成,以下是几种常见的方法: 使用现有库 vue-fullpage.js 安装 vue-ful…

vue实现popup

vue实现popup

Vue 实现 Popup 弹窗 使用 Vue 原生组件 创建一个基本的 Vue 组件作为弹窗,通过 v-if 或 v-show 控制显示隐藏。 <template> <div&…

vue实现换肤

vue实现换肤

使用 CSS 变量实现换肤 在 Vue 项目中,可以通过 CSS 变量(Custom Properties)动态切换主题色。CSS 变量可以在运行时修改,适合实现换肤功能。 定义全局 CSS 变量:…

vue代理实现

vue代理实现

Vue 代理实现方法 在 Vue 项目中,配置代理可以解决开发环境下的跨域问题,通常通过修改 vue.config.js 文件实现。以下是几种常见的代理配置方式: 基础代理配置 在 vue.conf…