当前位置:首页 > VUE

vue axios实现登录

2026-01-18 12:44:28VUE

安装 axios 依赖

在 Vue 项目中安装 axios 依赖包,可以通过 npm 或 yarn 进行安装。

npm install axios
# 或
yarn add axios

创建 axios 实例

src 目录下新建 utils/http.js 文件,配置 axios 实例,设置基础 URL 和拦截器。

vue axios实现登录

import axios from 'axios';

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

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

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

export default http;

创建登录 API 方法

src/api/auth.js 中定义登录接口方法。

import http from '../utils/http';

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

在 Vue 组件中调用登录

在登录组件中引入 API 方法,并处理用户输入和登录逻辑。

vue axios实现登录

<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.token);
        this.$router.push('/dashboard'); // 登录成功后跳转
      } catch (error) {
        alert('登录失败,请检查用户名和密码');
      }
    },
  },
};
</script>

处理 Token 存储和路由守卫

src/router/index.js 中配置路由守卫,检查用户是否已登录。

import Vue from 'vue';
import Router from 'vue-router';
import Home from '@/views/Home.vue';
import Login from '@/views/Login.vue';

Vue.use(Router);

const router = new Router({
  routes: [
    { path: '/', component: Home, meta: { requiresAuth: true } },
    { path: '/login', component: Login },
  ],
});

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

export default router;

全局注入 axios

main.js 中将 axios 实例挂载到 Vue 原型上,方便全局调用。

import Vue from 'vue';
import App from './App.vue';
import http from './utils/http';
import router from './router';

Vue.prototype.$http = http;

new Vue({
  router,
  render: (h) => h(App),
}).$mount('#app');

标签: vueaxios
分享给朋友:

相关文章

vue实现类别

vue实现类别

Vue 实现类别的几种方法 在 Vue 中实现类别功能可以通过多种方式完成,以下是一些常见的方法: 使用 v-bind:class 动态绑定类名 通过对象语法或数组语法动态绑定类名,根据条件添加或移…

vue实现视频

vue实现视频

Vue 实现视频播放的方法 在 Vue 项目中实现视频播放可以通过多种方式完成,以下是几种常见的方法: 使用 HTML5 的 <video> 标签 在 Vue 组件中直接使用 HTML…

vue实现pwa

vue实现pwa

Vue 实现 PWA 的步骤 Vue 结合 PWA(Progressive Web App)可以创建离线可用的 Web 应用。以下是实现方法: 安装 Vue CLI 并创建项目 确保已安装 Vue…

vue实现Pop

vue实现Pop

Vue 实现 Popover 组件的方法 使用 Vue 内置指令 v-show/v-if 和事件监听 通过 Vue 的指令和事件绑定实现基础的 Popover 功能。定义一个布尔值控制 Popover…

vue源码实现

vue源码实现

Vue 源码实现解析 Vue.js 的核心实现可以分为响应式系统、虚拟 DOM、模板编译、组件化等几个关键部分。以下是对这些核心机制的详细解析。 响应式系统 Vue 的响应式系统基于 Object.…

vue实现cs程序

vue实现cs程序

Vue 实现 CS(客户端-服务器)程序 Vue 本身是一个前端框架,主要用于构建用户界面。要实现一个完整的 CS(客户端-服务器)程序,需要结合后端技术。以下是实现的基本思路和步骤: 前端部分(V…