当前位置:首页 > VUE

vue axios 实现登录

2026-01-17 20:28:11VUE

Vue 中使用 Axios 实现登录功能

安装 Axios

在项目中安装 Axios 依赖:

npm install axios

创建 Axios 实例

src 目录下创建 api 文件夹,并新建 axios.js 文件:

import axios from 'axios'

const instance = axios.create({
  baseURL: 'http://your-api-base-url.com',
  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 => {
    return Promise.reject(error)
  }
)

export default instance

创建登录 API

api 文件夹下创建 auth.js

import request from './axios'

export const login = (data) => {
  return request({
    url: '/login',
    method: 'post',
    data
  })
}

创建登录页面组件

创建 Login.vue 组件:

<template>
  <div>
    <form @submit.prevent="handleSubmit">
      <input v-model="form.username" type="text" placeholder="Username">
      <input v-model="form.password" type="password" placeholder="Password">
      <button type="submit">Login</button>
    </form>
  </div>
</template>

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

export default {
  data() {
    return {
      form: {
        username: '',
        password: ''
      }
    }
  },
  methods: {
    async handleSubmit() {
      try {
        const res = await login(this.form)
        localStorage.setItem('token', res.token)
        this.$router.push('/dashboard')
      } catch (error) {
        console.error('Login failed:', error)
      }
    }
  }
}
</script>

路由配置

router/index.js 中配置登录路由:

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

Vue.use(Router)

export default new Router({
  routes: [
    {
      path: '/login',
      name: 'Login',
      component: Login
    }
  ]
})

状态管理(可选)

如需使用 Vuex 管理登录状态,可创建 store 模块:

// store/modules/auth.js
export default {
  state: {
    token: localStorage.getItem('token') || ''
  },
  mutations: {
    SET_TOKEN(state, token) {
      state.token = token
      localStorage.setItem('token', token)
    }
  },
  actions: {
    login({ commit }, credentials) {
      return login(credentials).then(res => {
        commit('SET_TOKEN', res.token)
        return res
      })
    }
  }
}

请求封装优化

可添加全局错误处理和 loading 状态:

// 在 axios.js 中添加
instance.interceptors.response.use(
  response => {
    return response.data
  },
  error => {
    if (error.response.status === 401) {
      // 处理未授权
      router.push('/login')
    }
    return Promise.reject(error)
  }
)

以上实现涵盖了 Vue 中使用 Axios 进行登录功能的主要环节,包括请求封装、API 管理、组件实现和状态存储。根据实际项目需求,可进一步扩展错误处理、表单验证等功能。

vue axios 实现登录

标签: vueaxios
分享给朋友:

相关文章

vue实现签章

vue实现签章

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

vue实现频道

vue实现频道

Vue实现频道功能的方法 使用Vue Router动态路由 通过Vue Router的动态路由功能可以轻松实现频道切换。在路由配置中定义动态参数,组件内通过this.$route.params获取当前…

vue实现flvvideo

vue实现flvvideo

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

vue 实现脚本

vue 实现脚本

Vue 实现脚本的方法 Vue.js 提供了多种方式来实现脚本功能,包括组件内脚本、混入(Mixins)、插件(Plugins)以及自定义指令等。以下是常见的实现方式: 组件内脚本 在 Vue 单文…

vue实现拖动

vue实现拖动

Vue实现拖动的常用方法 在Vue中实现拖动功能通常需要结合HTML5的拖放API或第三方库。以下是几种常见实现方式: 使用HTML5原生拖放API HTML5提供了原生拖放API,可以通过drag…

vue实现录像

vue实现录像

Vue 实现录像功能 在 Vue 中实现录像功能通常需要借助浏览器的 MediaDevices API 和 MediaRecorder API。以下是实现步骤: 获取用户摄像头和麦克风权限 使用…