当前位置:首页 > 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 的模板语法创建基础按钮组件,绑定点击事件处理购物逻辑: <template> <button @click="addToC…

在线脑图 vue 实现

在线脑图 vue 实现

在线脑图 Vue 实现方案 使用开源库实现 推荐使用 mind-elixir 或 jsmind 这类开源库,它们专为脑图设计且支持 Vue 集成。 安装依赖: npm install mind…

vue实现星星

vue实现星星

实现星星评分的Vue组件 使用Vue实现星星评分功能可以通过组件化方式完成,以下是一个完整的实现方案: 模板部分 <template> <div class="star-ra…

vue实现效果

vue实现效果

以下是Vue实现常见效果的几种典型方法,分为不同场景说明: 数据绑定与响应式更新 使用v-model实现表单双向绑定: <template> <input v-model="…

vue的实现

vue的实现

Vue 的实现原理 Vue 是一个渐进式 JavaScript 框架,其核心实现主要包括响应式系统、虚拟 DOM、模板编译和组件化机制。以下是 Vue 实现的主要技术细节。 响应式系统 Vue 的响…

vue实现订单

vue实现订单

Vue 实现订单功能 订单数据结构设计 订单数据通常包含以下字段: order: { id: String, // 订单ID userId: String,…