当前位置:首页 > VUE

vue 使用axios实现登录

2026-01-21 05:29:23VUE

安装axios

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

npm install axios
# 或
yarn add axios

配置axios实例

在src目录下创建utils/request.js文件,配置axios的基地址和拦截器:

import axios from 'axios'

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

// 请求拦截器
service.interceptors.request.use(
  config => {
    // 可在发送请求前处理逻辑(如添加token)
    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 => {
    return Promise.reject(error)
  }
)

export default service

创建登录API

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

vue 使用axios实现登录

import request from '@/utils/request'

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

实现登录组件

在登录组件中调用登录接口:

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

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

export default {
  data() {
    return {
      form: {
        username: '',
        password: ''
      }
    }
  },
  methods: {
    handleLogin() {
      login(this.form).then(response => {
        // 登录成功处理
        localStorage.setItem('token', response.data.token)
        this.$router.push('/dashboard')
      }).catch(error => {
        console.error('登录失败:', error)
      })
    }
  }
}
</script>

路由配置

确保配置了登录后的跳转路由(通常在router/index.js中):

vue 使用axios实现登录

const routes = [
  {
    path: '/login',
    component: () => import('@/views/Login.vue')
  },
  {
    path: '/dashboard',
    component: () => import('@/views/Dashboard.vue'),
    meta: { requiresAuth: true }
  }
]

全局路由守卫

添加路由守卫实现登录状态验证:

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

错误处理增强

建议在拦截器中添加更完善的错误处理逻辑:

service.interceptors.response.use(
  response => {
    if (response.data.code !== 200) {
      return Promise.reject(new Error(response.data.message || 'Error'))
    }
    return response.data
  },
  error => {
    if (error.response.status === 401) {
      // 处理token过期等情况
      localStorage.removeItem('token')
      router.push('/login')
    }
    return Promise.reject(error)
  }
)

标签: vueaxios
分享给朋友:

相关文章

vue功能实现

vue功能实现

Vue 功能实现指南 Vue.js 是一个渐进式 JavaScript 框架,广泛用于构建用户界面。以下是 Vue 功能的常见实现方法。 数据绑定 Vue 的核心功能之一是数据绑定,通过 v-mod…

vue 实现打印

vue 实现打印

Vue 实现打印功能的方法 在Vue项目中实现打印功能,可以通过以下几种方式实现: 使用window.print()方法 通过调用浏览器的原生打印API实现基础打印功能,适用于简单内容打印。…

vue实现博客

vue实现博客

Vue 实现博客的基本步骤 使用 Vue.js 实现一个博客系统可以分为前端和后端两部分。以下是基于 Vue 的前端实现方案,后端可以选择 Node.js、Django 或其他框架。 项目初始化 使…

vue实现签章

vue实现签章

Vue 实现签章功能 签章功能通常包括手写签名、电子印章等。以下是基于 Vue 的实现方法: 使用 canvas 实现手写签名 安装依赖(如需要): npm install signatu…

vue代理实现

vue代理实现

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

vue实现flvvideo

vue实现flvvideo

vue-flv-player 实现 FLV 视频播放 安装依赖包 npm install flv.js vue-flv-player 基础组件引入 <template> <…