当前位置:首页 > 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交互,实现用户登录和注册功能。

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管理用户登录状态,实现全局状态共享。

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
      // 继续处理登录或注册
    }
  }
}

响应式设计

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

vue实现登录注册

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

标签: vue
分享给朋友:

相关文章

vue  select实现

vue select实现

Vue Select 实现方法 在 Vue 中实现下拉选择功能可以使用原生 <select> 标签或第三方库如 vue-select。以下是两种方法的详细说明: 原生 HTML Sele…

vue实现批量

vue实现批量

Vue 实现批量操作的方法 在 Vue 中实现批量操作通常涉及选择多个项目并执行统一处理,例如批量删除、批量更新等。以下是几种常见实现方式: 表格多选批量操作 使用 el-table 配合复选框实现…

vue实现标题

vue实现标题

Vue 实现标题的方法 在Vue中实现标题可以通过多种方式,以下是几种常见的方法: 方法一:使用模板语法 在Vue组件的模板中直接使用HTML的<h1>到<h6>标签来定义…

vue实现curd

vue实现curd

Vue实现CRUD操作 初始化Vue项目 使用Vue CLI创建新项目,安装必要依赖如axios用于HTTP请求 vue create crud-demo cd crud-demo npm inst…

vue键盘实现

vue键盘实现

监听键盘事件 在Vue中监听键盘事件可以通过v-on指令或@缩写实现。常见的键盘事件包括keydown、keyup和keypress。例如监听回车键事件: <template> &l…

vue实现伸缩

vue实现伸缩

Vue实现伸缩功能的方法 使用CSS过渡和Vue的v-if或v-show 通过CSS的transition属性结合Vue的条件渲染指令(v-if或v-show)可以实现元素的伸缩效果。定义一个CSS类…