当前位置:首页 > VUE

vue登录注册实现

2026-03-08 06:05:53VUE

实现Vue登录注册功能

项目结构搭建

使用Vue CLI创建项目,安装必要依赖如vue-router、axios、vuex。项目结构建议包含views(Login.vue、Register.vue)、router(index.js)、store(auth.js)等目录。

路由配置

在router/index.js中配置登录和注册页面的路由:

const routes = [
  {
    path: '/login',
    name: 'Login',
    component: () => import('../views/Login.vue')
  },
  {
    path: '/register',
    name: 'Register',
    component: () => import('../views/Register.vue')
  }
]

表单组件开发

Login.vue模板部分示例:

<template>
  <form @submit.prevent="handleLogin">
    <input v-model="email" type="email" placeholder="Email">
    <input v-model="password" type="password" placeholder="Password">
    <button type="submit">Login</button>
  </form>
</template>

状态管理

在store/auth.js中创建Vuex模块管理认证状态:

const state = {
  user: null,
  token: localStorage.getItem('token') || null
}

const mutations = {
  SET_USER(state, user) {
    state.user = user
  },
  SET_TOKEN(state, token) {
    state.token = token
    localStorage.setItem('token', token)
  }
}

API请求封装

创建services/auth.js封装HTTP请求:

import axios from 'axios'

export default {
  login(credentials) {
    return axios.post('/api/login', credentials)
  },
  register(userData) {
    return axios.post('/api/register', userData)
  }
}

表单验证处理

使用Vuelidate或自定义验证:

validations: {
  email: { required, email },
  password: { required, minLength: minLength(6) }
}

路由守卫配置

在router/index.js中添加全局前置守卫:

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

响应处理

在组件中处理API响应:

methods: {
  async handleLogin() {
    try {
      const response = await authService.login({
        email: this.email,
        password: this.password
      })
      this.$store.commit('SET_TOKEN', response.data.token)
      this.$router.push('/dashboard')
    } catch (error) {
      this.error = error.response.data.message
    }
  }
}

注册流程实现

Register.vue中实现用户注册:

<template>
  <form @submit.prevent="handleRegister">
    <input v-model="name" type="text" placeholder="Name">
    <input v-model="email" type="email" placeholder="Email">
    <input v-model="password" type="password" placeholder="Password">
    <input v-model="passwordConfirm" type="password" placeholder="Confirm Password">
    <button type="submit">Register</button>
  </form>
</template>

密码加密处理

确保后端API对密码进行加密存储,前端只需发送明文密码到安全HTTPS端点。

错误处理优化

全局配置axios拦截器处理常见错误:

vue登录注册实现

axios.interceptors.response.use(
  response => response,
  error => {
    if (error.response.status === 401) {
      store.commit('LOGOUT')
      router.push('/login')
    }
    return Promise.reject(error)
  }
)

用户体验优化

添加加载状态、成功/错误提示、自动填充检测等功能提升用户体验。

标签: vue
分享给朋友:

相关文章

vue实现字母添加排序

vue实现字母添加排序

实现字母添加排序的方法 在Vue中实现字母添加排序功能,可以通过以下步骤完成: 创建Vue实例并定义数据 new Vue({ el: '#app', data: { letters…

vue实现a

vue实现a

Vue 实现 A 功能的方法 在 Vue 中实现 A 功能可以通过多种方式,具体取决于 A 功能的具体需求。以下是几种常见的实现方法: 使用 Vue 组件 通过创建自定义组件来实现 A 功能。组件可…

vue翻页实现

vue翻页实现

Vue翻页实现方法 基础分页组件实现 使用v-for和计算属性实现基础分页逻辑: <template> <div> <ul> <li…

javascript实现vue

javascript实现vue

Vue.js 的基本实现 在 JavaScript 中实现 Vue.js 的核心功能,主要包括数据绑定、响应式系统和虚拟 DOM。以下是一个简化的实现示例。 数据响应式系统 通过 Object.de…

vue实现选择

vue实现选择

Vue 实现选择功能的方法 在 Vue 中实现选择功能可以通过多种方式完成,以下介绍几种常见的实现方法。 使用 v-model 绑定单选 通过 v-model 可以轻松实现单选功能。以下是一个简单的…

vue框架实现

vue框架实现

Vue 框架实现方法 Vue 是一个渐进式 JavaScript 框架,适用于构建用户界面。以下是一些核心实现方法,涵盖基本使用、组件化、状态管理和优化技巧。 基本项目搭建 使用 Vue CLI…