当前位置:首页 > VUE

vue实现登录 注册

2026-03-10 02:48:41VUE

vue实现登录 注册

vue实现登录 注册

Vue 实现登录和注册功能

技术栈建议

  • Vue 3(Composition API)
  • Vue Router(路由跳转)
  • Axios(HTTP请求)
  • Pinia/Vuex(状态管理,可选)

项目结构示例

src/  
├── views/  
│   ├── Login.vue    # 登录页面  
│   └── Register.vue # 注册页面  
├── router/  
│   └── index.js     # 路由配置  
├── stores/          # 状态管理(Pinia示例)  
│   └── auth.js  
└── api/  
    └── auth.js      # 接口封装  

核心代码实现

路由配置

// router/index.js  
import { createRouter, createWebHistory } from 'vue-router';  
import Login from '@/views/Login.vue';  
import Register from '@/views/Register.vue';  

const routes = [  
  { path: '/login', component: Login },  
  { path: '/register', component: Register }  
];  

const router = createRouter({  
  history: createWebHistory(),  
  routes  
});  

export default router;  

登录页面(Login.vue)

<template>  
  <form @submit.prevent="handleLogin">  
    <input v-model="email" type="email" placeholder="邮箱" required />  
    <input v-model="password" type="password" placeholder="密码" required />  
    <button type="submit">登录</button>  
  </form>  
</template>  

<script setup>  
import { ref } from 'vue';  
import { useRouter } from 'vue-router';  
import { login } from '@/api/auth';  

const email = ref('');  
const password = ref('');  
const router = useRouter();  

const handleLogin = async () => {  
  try {  
    const response = await login({  
      email: email.value,  
      password: password.value  
    });  
    localStorage.setItem('token', response.data.token);  
    router.push('/dashboard'); // 跳转到主页  
  } catch (error) {  
    alert('登录失败: ' + error.message);  
  }  
};  
</script>  

注册页面(Register.vue)

<template>  
  <form @submit.prevent="handleRegister">  
    <input v-model="name" type="text" placeholder="用户名" required />  
    <input v-model="email" type="email" placeholder="邮箱" required />  
    <input v-model="password" type="password" placeholder="密码" required />  
    <button type="submit">注册</button>  
  </form>  
</template>  

<script setup>  
import { ref } from 'vue';  
import { useRouter } from 'vue-router';  
import { register } from '@/api/auth';  

const name = ref('');  
const email = ref('');  
const password = ref('');  
const router = useRouter();  

const handleRegister = async () => {  
  try {  
    await register({  
      name: name.value,  
      email: email.value,  
      password: password.value  
    });  
    router.push('/login'); // 注册成功后跳转登录页  
  } catch (error) {  
    alert('注册失败: ' + error.message);  
  }  
};  
</script>  

API封装(auth.js)

// api/auth.js  
import axios from 'axios';  

const API_URL = 'http://your-api-domain.com/auth';  

export const login = (credentials) => {  
  return axios.post(`${API_URL}/login`, credentials);  
};  

export const register = (userData) => {  
  return axios.post(`${API_URL}/register`, userData);  
};  

关键点说明

  • 表单验证:可使用 Vuelidate 或手动校验(如 required 属性)。
  • Token 存储:登录成功后通常将 token 存入 localStoragePinia/Vuex
  • 路由守卫:通过 router.beforeEach 实现未登录跳转登录页。
  • 安全性:密码字段需加密传输(如 HTTPS + BCrypt)。

扩展功能建议

  • 添加验证码功能
  • 第三方登录(OAuth 2.0)
  • 密码重置流程

标签: vue
分享给朋友:

相关文章

vue实现飘窗原理

vue实现飘窗原理

vue实现飘窗原理 飘窗效果通常指在页面上悬浮显示的弹窗或通知,跟随页面滚动或固定在某个位置。Vue实现这一效果主要依赖组件化开发、CSS定位和动态数据绑定。 组件结构设计 创建一个独立的Vue组件…

vue实现https

vue实现https

Vue 中实现 HTTPS 的步骤 在 Vue 项目中实现 HTTPS 主要涉及开发环境配置和生产环境部署。以下是具体方法: 开发环境配置(Vue CLI 或 Vite) 使用 mkcert 生成…

vue 实现pdf

vue 实现pdf

在Vue中实现PDF功能 在Vue项目中实现PDF功能通常涉及PDF生成、预览或下载。以下是几种常见实现方式: 使用vue-pdf库预览PDF 安装依赖: npm install vue-pdf…

vue原理实现

vue原理实现

Vue 原理实现的核心机制 Vue.js 的核心原理基于响应式系统、虚拟 DOM 和模板编译。以下是其核心实现机制的分解: 响应式系统 Vue 使用 Object.defineProperty(Vu…

vue toast实现

vue toast实现

Vue Toast 实现方法 使用第三方库(推荐) 安装 vue-toastification 库,这是一个功能丰富且轻量级的 Vue Toast 插件。 npm install vue-toast…

vue模版实现

vue模版实现

Vue 模板实现方法 Vue 模板是 Vue.js 的核心特性之一,用于声明式地将 DOM 绑定至底层 Vue 实例的数据。以下是几种常见的 Vue 模板实现方式: 单文件组件(SFC) 使用 .v…