当前位置:首页 > VUE

vue登录模块实现

2026-03-09 02:35:44VUE

Vue登录模块实现

创建登录表单组件

在Vue项目中创建一个登录表单组件,包含用户名和密码输入框以及提交按钮。使用v-model绑定数据,确保表单数据双向绑定。

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

<script>
export default {
  data() {
    return {
      username: '',
      password: ''
    }
  },
  methods: {
    handleLogin() {
      // 登录逻辑
    }
  }
}
</script>

表单验证

使用Vuelidate或其他验证库对表单输入进行验证,确保用户名和密码符合要求。

import { required, minLength } from 'vuelidate/lib/validators'

export default {
  data() {
    return {
      username: '',
      password: ''
    }
  },
  validations: {
    username: { required },
    password: { required, minLength: minLength(6) }
  },
  methods: {
    handleLogin() {
      if (this.$v.$invalid) {
        alert('请填写正确的用户名和密码')
        return
      }
      // 登录逻辑
    }
  }
}

调用登录API

通过Axios或其他HTTP库调用后端登录API,发送用户名和密码。

methods: {
  async handleLogin() {
    if (this.$v.$invalid) return

    try {
      const response = await axios.post('/api/login', {
        username: this.username,
        password: this.password
      })
      // 处理登录成功
    } catch (error) {
      // 处理登录失败
    }
  }
}

处理登录响应

根据API返回结果处理登录成功或失败的情况,成功时保存用户token并跳转页面。

methods: {
  async handleLogin() {
    try {
      const response = await axios.post('/api/login', {
        username: this.username,
        password: this.password
      })

      localStorage.setItem('token', response.data.token)
      this.$router.push('/dashboard')
    } catch (error) {
      alert('登录失败:' + error.response.data.message)
    }
  }
}

路由守卫配置

在Vue Router中配置全局前置守卫,保护需要登录才能访问的路由。

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

状态管理

使用Vuex管理用户登录状态,确保应用各组件能获取当前用户信息。

const store = new Vuex.Store({
  state: {
    user: null,
    isAuthenticated: false
  },
  mutations: {
    setUser(state, user) {
      state.user = user
      state.isAuthenticated = true
    },
    logout(state) {
      state.user = null
      state.isAuthenticated = false
    }
  }
})

登录组件集成

将登录组件集成到应用中,并处理登录后的状态更新和页面跳转。

methods: {
  async handleLogin() {
    try {
      const response = await axios.post('/api/login', {
        username: this.username,
        password: this.password
      })

      this.$store.commit('setUser', response.data.user)
      localStorage.setItem('token', response.data.token)
      this.$router.push('/dashboard')
    } catch (error) {
      alert('登录失败')
    }
  }
}

错误处理和用户体验

添加加载状态和错误提示,提升用户体验。

vue登录模块实现

<template>
  <div class="login-form">
    <input v-model="username" type="text" placeholder="用户名" />
    <input v-model="password" type="password" placeholder="密码" />
    <button @click="handleLogin" :disabled="isLoading">
      {{ isLoading ? '登录中...' : '登录' }}
    </button>
    <p v-if="error" class="error">{{ error }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      isLoading: false,
      error: null
    }
  },
  methods: {
    async handleLogin() {
      this.isLoading = true
      this.error = null

      try {
        // 登录逻辑
      } catch (error) {
        this.error = '登录失败,请检查用户名和密码'
      } finally {
        this.isLoading = false
      }
    }
  }
}
</script>

标签: 模块vue
分享给朋友:

相关文章

vue实现添加用户

vue实现添加用户

Vue 实现添加用户功能 数据绑定与表单设计 在 Vue 中实现添加用户功能,首先需要设计一个表单,用于收集用户输入的数据。通过 v-model 实现双向数据绑定,确保表单数据与 Vue 实例中的数据…

vue实现方法

vue实现方法

Vue 实现方法 Vue 是一种流行的前端框架,用于构建用户界面和单页应用。以下是几种常见的 Vue 实现方法: 创建 Vue 实例 通过 new Vue() 创建一个 Vue 实例,传入配置对象,…

vue实现建模

vue实现建模

Vue 实现建模的方法 在 Vue 中实现建模通常涉及数据绑定、组件化和状态管理。以下是几种常见的方法: 数据驱动建模 Vue 的核心是数据驱动视图。通过定义数据模型,Vue 会自动更新 DOM。例…

vue实现画图

vue实现画图

Vue 实现画图功能 在 Vue 中实现画图功能通常需要结合 HTML5 的 <canvas> 元素或第三方库。以下是几种常见的方法: 使用原生 Canvas API 通过 Vue 直接…

vue 实现excel

vue 实现excel

Vue 实现 Excel 功能 前端导出 Excel 使用 xlsx 库可以轻松实现前端 Excel 导出功能。安装依赖: npm install xlsx 导出 Excel 示例代码: impo…

vue实现通讯

vue实现通讯

Vue 组件通讯方法 父子组件通讯 父组件向子组件传递数据通过 props,子组件向父组件传递数据通过 $emit 事件。 父组件模板: <child-component :message=…