当前位置:首页 > VUE

vue实现登录注册

2026-02-09 08:57:39VUE

实现登录注册功能

在Vue中实现登录注册功能需要结合前端和后端交互,以下是具体实现步骤。

创建登录注册表单

使用Vue的模板语法创建登录和注册表单,包含用户名、密码等字段。

<template>
  <div>
    <form @submit.prevent="handleSubmit">
      <input v-model="form.username" placeholder="用户名" />
      <input v-model="form.password" placeholder="密码" type="password" />
      <button type="submit">{{ isLogin ? '登录' : '注册' }}</button>
    </form>
    <button @click="toggleMode">{{ isLogin ? '切换到注册' : '切换到登录' }}</button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      isLogin: true,
      form: {
        username: '',
        password: ''
      }
    }
  },
  methods: {
    toggleMode() {
      this.isLogin = !this.isLogin
    },
    handleSubmit() {
      if (this.isLogin) {
        this.login()
      } else {
        this.register()
      }
    }
  }
}
</script>

处理登录注册逻辑

通过axios发送HTTP请求与后端API交互,实现用户登录和注册功能。

vue实现登录注册

import axios from 'axios'

export default {
  methods: {
    async login() {
      try {
        const response = await axios.post('/api/login', this.form)
        localStorage.setItem('token', response.data.token)
        this.$router.push('/dashboard')
      } catch (error) {
        alert('登录失败')
      }
    },
    async register() {
      try {
        await axios.post('/api/register', this.form)
        alert('注册成功')
        this.isLogin = true
      } catch (error) {
        alert('注册失败')
      }
    }
  }
}

路由配置

使用Vue Router配置路由,保护需要登录才能访问的页面。

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

Vue.use(Router)

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

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

export default router

状态管理

使用Vuex管理用户登录状态,实现全局状态共享。

vue实现登录注册

import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

export default new Vuex.Store({
  state: {
    user: null
  },
  mutations: {
    setUser(state, user) {
      state.user = user
    }
  },
  actions: {
    login({ commit }, user) {
      commit('setUser', user)
    },
    logout({ commit }) {
      commit('setUser', null)
    }
  }
})

表单验证

添加表单验证功能,确保用户输入符合要求。

export default {
  data() {
    return {
      errors: {}
    }
  },
  methods: {
    validateForm() {
      this.errors = {}
      if (!this.form.username) {
        this.errors.username = '用户名不能为空'
      }
      if (!this.form.password) {
        this.errors.password = '密码不能为空'
      }
      return Object.keys(this.errors).length === 0
    },
    handleSubmit() {
      if (!this.validateForm()) return
      // 继续处理登录或注册
    }
  }
}

响应式设计

添加响应式样式,优化移动端用户体验。

<style scoped>
form {
  max-width: 400px;
  margin: 0 auto;
}
input {
  display: block;
  width: 100%;
  margin-bottom: 10px;
}
button {
  width: 100%;
}
</style>

标签: vue
分享给朋友:

相关文章

vue异步组建实现原理

vue异步组建实现原理

Vue 异步组件实现原理 Vue 的异步组件允许将组件按需加载,通常用于代码分割或延迟加载非关键组件。其核心原理基于 Promise 和动态导入。 基本实现方式 通过 defineAsyncComp…

vue课程实现

vue课程实现

Vue 课程实现方案 课程内容设计 Vue课程应从基础到高级逐步展开,涵盖Vue核心概念、组件化开发、状态管理、路由、构建工具等。基础部分包括Vue实例、模板语法、计算属性和侦听器。中级部分深入组件通…

vue filter 实现

vue filter 实现

在 Vue.js 中,过滤器(Filter)是一种用于文本格式化的功能,可以在模板中直接使用。以下是实现过滤器的详细方法: 全局过滤器注册 通过 Vue.filter 方法注册全局过滤器,可在所有组…

vue实现展开

vue实现展开

展开功能的实现方法 在Vue中实现展开功能可以通过多种方式完成,常见的有使用v-show、v-if指令,结合CSS过渡动画或第三方组件库。 使用v-show控制显示隐藏 通过v-show指令可以简单…

vue递归实现

vue递归实现

vue递归实现方法 在Vue中实现递归组件通常用于树形结构、嵌套菜单等场景。以下是具体实现方式: 使用组件name属性递归 定义一个组件时,通过name属性让组件可以在自身模板中调用自己:…

vue实现ftp

vue实现ftp

Vue 中实现 FTP 功能 Vue 本身是一个前端框架,无法直接操作 FTP 协议(FTP 通常需要后端支持)。以下是两种常见实现方式: 前端与后端配合实现 FTP 前端通过 API 与后端通信,…