当前位置:首页 > VUE

vue登录注册实现说

2026-02-23 04:51:37VUE

Vue 登录注册实现

前端实现

使用 Vue CLI 创建一个新项目,安装必要的依赖如 Vue Router 和 Axios。

vue create auth-app
cd auth-app
npm install vue-router axios

创建登录和注册组件,在 src/components 目录下创建 Login.vueRegister.vue

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

<script>
export default {
  data() {
    return {
      email: '',
      password: ''
    }
  },
  methods: {
    async handleLogin() {
      try {
        const response = await axios.post('/api/login', {
          email: this.email,
          password: this.password
        })
        localStorage.setItem('token', response.data.token)
        this.$router.push('/dashboard')
      } catch (error) {
        console.error(error)
      }
    }
  }
}
</script>
<!-- Register.vue -->
<template>
  <div>
    <h2>Register</h2>
    <form @submit.prevent="handleRegister">
      <input v-model="name" type="text" placeholder="Name" required>
      <input v-model="email" type="email" placeholder="Email" required>
      <input v-model="password" type="password" placeholder="Password" required>
      <button type="submit">Register</button>
    </form>
  </div>
</template>

<script>
export default {
  data() {
    return {
      name: '',
      email: '',
      password: ''
    }
  },
  methods: {
    async handleRegister() {
      try {
        const response = await axios.post('/api/register', {
          name: this.name,
          email: this.email,
          password: this.password
        })
        localStorage.setItem('token', response.data.token)
        this.$router.push('/dashboard')
      } catch (error) {
        console.error(error)
      }
    }
  }
}
</script>

配置路由,在 src/router/index.js 中设置路由。

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

Vue.use(Router)

export default new Router({
  routes: [
    { path: '/login', component: Login },
    { path: '/register', component: Register },
    { path: '/dashboard', component: Dashboard }
  ]
})

后端实现

使用 Node.js 和 Express 创建一个简单的后端服务,处理登录和注册请求。

mkdir server
cd server
npm init -y
npm install express body-parser jsonwebtoken bcryptjs cors

创建 server.js 文件。

const express = require('express')
const bodyParser = require('body-parser')
const jwt = require('jsonwebtoken')
const bcrypt = require('bcryptjs')
const cors = require('cors')

const app = express()
app.use(bodyParser.json())
app.use(cors())

const users = []

app.post('/api/register', async (req, res) => {
  const { name, email, password } = req.body
  const hashedPassword = await bcrypt.hash(password, 10)
  users.push({ name, email, password: hashedPassword })
  const token = jwt.sign({ email }, 'secret_key', { expiresIn: '1h' })
  res.json({ token })
})

app.post('/api/login', async (req, res) => {
  const { email, password } = req.body
  const user = users.find(user => user.email === email)
  if (!user) return res.status(400).json({ message: 'User not found' })
  const validPassword = await bcrypt.compare(password, user.password)
  if (!validPassword) return res.status(400).json({ message: 'Invalid password' })
  const token = jwt.sign({ email }, 'secret_key', { expiresIn: '1h' })
  res.json({ token })
})

app.listen(3001, () => {
  console.log('Server running on port 3001')
})

前后端联调

在 Vue 项目的 src/main.js 中配置 Axios 默认 baseURL。

import Vue from 'vue'
import App from './App.vue'
import router from './router'
import axios from 'axios'

axios.defaults.baseURL = 'http://localhost:3001'

Vue.config.productionTip = false

new Vue({
  router,
  render: h => h(App)
}).$mount('#app')

启动前端和后端服务,分别在不同的终端运行。

# 前端
npm run serve

# 后端
node server.js

访问 http://localhost:8080/loginhttp://localhost:8080/register 测试功能。

vue登录注册实现说

标签: vue
分享给朋友:

相关文章

vue实现增删改

vue实现增删改

Vue 实现增删改查功能 Vue.js 是一个流行的前端框架,用于构建用户界面。以下是使用 Vue.js 实现增删改查(CRUD)功能的方法。 数据初始化 在 Vue 实例的 data 中初始化一…

vue实现视频会议

vue实现视频会议

使用 Vue 实现视频会议 技术选型 Vue.js 作为前端框架,结合 WebRTC 技术实现实时音视频通信。常用的库包括: peerjs:简化 WebRTC 的点对点连接。 socket.io:用…

vue菜单实现

vue菜单实现

Vue 菜单实现方法 使用 Element UI 的菜单组件 Element UI 提供了现成的菜单组件,适合快速实现导航菜单。安装 Element UI 后,可以直接使用 el-menu 相关组件。…

vue实现接口

vue实现接口

在 Vue 中实现接口请求 Vue 本身不直接提供 HTTP 请求功能,通常需要借助第三方库如 axios 或 fetch 来实现接口请求。以下是几种常见方法: 使用 axios 发送请求 安装 a…

vue实现选择

vue实现选择

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

vue实现快手

vue实现快手

Vue 实现类似快手的功能 Vue.js 是一个渐进式 JavaScript 框架,适合构建复杂的单页应用。要实现类似快手的功能,可以结合 Vue 和相关技术栈进行开发。 核心功能模块 视频流展示…