Vue+MySQL实现登录注册案例

1.新建vue项目并连接数据库

具体步骤见vue连接mysql数据库

2.新建登录页面、注册页面和首页

在src/views文件夹下,新建 login.vue(登录页面)、register.vue(注册页面) 和 home.vue(首页)

  • 根据自己的喜好搭建页面(本人此处使用了elementUI的组件,cv前要先安装elementUI中间件)
npm i element-ui -S
<template><div class="bg"><div id="login"><h2>登录页面</h2><el-form ref="form" :model="form" label-width="20%"><el-form-item label="用户名:"><el-input v-model="form.username"></el-input></el-form-item><el-form-item label="密  码:"><el-input v-model="form.password" type="password"></el-input></el-form-item></el-form><el-button type="primary" round @click="login" class="btn">登录</el-button><a @click="register" class="reg">前往注册</a></div></div>
</template>
<template><div class="bg"><div id="register"><h2>注册页面</h2><el-form ref="form" :model="form" label-width="20%"><el-form-item label="用户名:"><el-input v-model="form.username"></el-input></el-form-item><el-form-item label="密  码:"><el-input v-model="form.password" type="password"></el-input></el-form-item></el-form><el-button type="primary" round @click="register" class="btn">注册</el-button></div></div>
</template>
<template><div id="main"><el-container><el-header><div class="logo" ><img src="../assets/img/logo.png">  <!-- 此处请提前准备好图片 --></div><div class="user">{{username}}</div></el-header><el-main>main</el-main><el-footer>Footer</el-footer></el-container></div>
</template>
  • 页面效果

4.页面路由配置

在src/router/index.js中配置页面对应路由

import Vue from 'vue'
import VueRouter from 'vue-router'Vue.use(VueRouter)const home = () => import("../views/home.vue")    //懒加载
const login = () => import("../views/login.vue")
const register = () => import("../views/register.vue")const routes = [{path: '',redirect: '/login'   //重定向}{path: '/login',name: 'login',component: login},{path: '/register',name: 'register',component: register},{path: '/home',name: 'home',component: home,}
]const router = new VueRouter({mode: 'history',base: process.env.BASE_URL,routes
})//解决相同路径跳转报错问题
//使用push的方法
const RouterPush = VueRouter.prototype.push
VueRouter.prototype.push = function push (to) {return RouterPush.call(this, to).catch(err => err)
}//使用replace的方法
const RouterReplace = VueRouter.prototype.replace
VueRouter.prototype.replace = function replace (to) {return RouterReplace.call(this, to).catch(err => err)
}export default router

4.新建/server/API/login.js

接收 req.query / req.bosy 传递来的参数,通过查询语句查询对应数据并放回结果

let db = require('../db/index')exports.login = (req, res) => {var sql = 'select * from user where name = ? and password = ?'db.query(sql, [req.query.name, req.query.password], (err, data) => {if(err) {return res.send({status: 400,message: "登录失败"})}if(data.length > 0) {res.send({status: 200,message: "登录成功"})}else{res.send({status: 202,message: '用户名或密码错误'})}})
}exports.register = (req, res) => {const sql1 = 'select * from user where name = ?'const sql2 = 'insert into user (name, password) value (?, ?)'db.query(sql1, [req.body.params.name], (err, data) => {if(err) {return res.send({status: 400,message: "操作失败"})}if(data.length > 0) {return res.send({status: 202,message: '用户名已存在'})}else{db.query(sql2, [req.body.name, req.body.password], (err, data) => {if(err) {return res.send({status: 400,message: "注册失败"})}res.send({status: 200,message: "注册成功"})})}})
}

5.在/server/router.js中配置对应路由

let express = require('express')
let router = express.Router()
let login = require('./API/login')router.get('/login', login.login)
router.post('/register', login.register)module.exports = router

6.在/views/login.vue、/views/register.vue和/views/home.vue中编写相应方法

<template><div class="bg"><div id="login"><h2>登录页面</h2><el-form ref="form" :model="form" label-width="20%"><el-form-item label="用户名:"><el-input v-model="form.username"></el-input></el-form-item><el-form-item label="密  码:"><el-input v-model="form.password" type="password"></el-input></el-form-item></el-form><el-button type="primary" round @click="login" class="btn">登录</el-button></div></div>
</template><script>import axios from "axios"
export default {data () {return {form: {username: '',password: ''  }};},methods: {login() {if(this.form.username == '') {this.$message.error('用户名不能为空');}else if(this.form.password == '') {this.$message.error('密码不能为空');}else{axios.get('http://127.0.0.1/login', {params: {name: this.form.username,password: this.form.password}}).then(res=>{if(res.data.status == 200) {this.$router.push({path: '/home',query: {name: this.form.username}})}else{this.$alert('用户名或密码错误', '登录失败', {confirmButtonText: '确定',callback: action => {this.form.username = '',this.form.password = ''}});}}).catch(err=>{console.log("登录失败" + err);})}},register() {this.$router.push('/register')}}
}</script>
<template><div class="bg"><div id="register"><h2>注册页面</h2><el-form ref="form" :model="form" label-width="20%"><el-form-item label="用户名:"><el-input v-model="form.username"></el-input></el-form-item><el-form-item label="密  码:"><el-input v-model="form.password" type="password"></el-input></el-form-item></el-form><el-button type="primary" round @click="register" class="btn">注册</el-button></div></div>
</template><script>import axios from "axios"
export default {data () {return {form: {username: '',password: ''  },isnull: false};},methods: {register() {if(this.form.username == '') {this.$message.error('用户名不能为空');}else if(this.form.password == '') {this.$message.error('密码不能为空');}else{axios.post('http://127.0.0.1/register', this.form}).then(res => {// console.log(res.data.message);if(res.data.status == 200) {this.$alert('是否返回登录页面', '注册成功', {confirmButtonText: '确定',callback: action => {this.$router.push('/login')}})}else if(res.data.status == 202) {this.$alert('用户名已存在', '注册失败', {confirmButtonText: '确定',callback: action => {this.form.username = '',this.form.password = ''}})}else{console.log(res.message);}}).catch(err => {console.log('操作失败' + err);})}}}
}</script>
<template><div id="main"><el-container><el-header><div class="logo" ><img src="../assets/img/logo.png">  <!-- 此处请提前准备好图片 --></div><div class="user">{{username}}</div></el-header><el-main>main</el-main><el-footer>Footer</el-footer></el-container></div>
</template>
<script>export default {name: 'Main',data() {return{username: ''}},created() {  //页面创建时,把路由传递来的用户名赋值给data中的username,这样就可以在页面显示用户名了(效果见首页的右上角)this.username = this.$route.query.name;}}</script>

效果展示

登录注册demo

git源码地址:https://gitee.com/xie-xiaochun/login-registration-demo
注意:资源中不包含数据库,需自己创建数据库,并修改源码中数据库的相关信息。

Vue+MySQL实现登录注册案例相关推荐

  1. node.js+vue.js+mysql实现登录注册的功能(前后端分离)

    参考教程:github源码地址 Node.js+Mysql+Vue+ElementUI 实现登录注册注销功能 1 准备 1.1 MySQL数据库 参考教程:NodeJS连接MySql.易百教程.菜鸟教 ...

  2. Vue项目之登录注册

    Vue项目之登录注册 1. 注册 1.1 注册页面的布局 1.2 注册业务逻辑的实现 2. 登录 3.导航守卫 3.1全局导航守卫,全部路由都会经过这里.一定要调用next方法向下执行 3.2 路由独 ...

  3. android servlet 登陆,Android Studio+Servlet+MySql实现登录注册

    一.Android 项目当中设置明文传输 1.设置明文传输的xml 2.引入上述创建的xml android:networkSecurityConfig="@xml/network_secu ...

  4. 【Web基础】用户登录注册案例

    4,用户登录注册案例 4.1 需求分析 需求说明: 完成用户登录功能,如果用户勾选"记住用户" ,则下次访问登录页面 自动 填充用户名密码 完成注册功能,并实现 验证码 功能 4. ...

  5. JavaWeb-WEB核心7 会话技术 理解什么是会话跟踪技术掌握Cookie的使用掌握Session的使用(钝化、活化)完善用户登录注册案例的功能

    会话技术 今日目标 理解什么是会话跟踪技术 掌握Cookie的使用 掌握Session的使用 完善用户登录注册案例的功能 1,会话跟踪技术的概述 对于会话跟踪这四个词,我们需要拆开来进行解释,首先要理 ...

  6. vue+node+mysql实现登录注册功能

    1.创建目录 2.安装需要用到的axios,mysql, express, body-parser npm install axios mysql express body-parser --save ...

  7. HTML MySQL实现登录注册_servlet+html+mysql实现登录注册功能

    这是结构图 jdbc连接数据库 package jdbc; import java.sql.DriverManager; import java.sql.SQLException; import ja ...

  8. java通过mysql验证登录注册范例

    package c.test;import java.awt.Container; import java.sql.*; import java.util.*;import javax.swing.R ...

  9. Django练习——基于Mysql的登录注册功能界面(django模型、模板、表单简单应用)

    目录 1.创建 2.配置Mysql (1)连接数据库驱动 (2)创建表格 (3)创建迁移文件并同步到数据库 3.admin后台 (1)创建超级用户 (2)注册模型login_msg 4.路由与视图 4 ...

最新文章

  1. 开发自己的Data Access Application Block[下篇]
  2. python基本图形绘制_【Python】Python基本图形绘制-Go语言中文社区
  3. jquery在ie浏览器下中文乱码的问题
  4. 数据中心机房安全知识培训
  5. BZOJ 2038: [2009国家集训队]小Z的袜子(莫队算法例题)
  6. leetcode 1044. Longest Duplicate Substring | 1044. 最长重复子串(Rabin Karp算法)
  7. mysql odbc ado性能差异_ODBC、OLEDB和ADO之间的关系 ,以及性能比较
  8. 第一次使用 Blog
  9. TypeSrcript如何引入第三方库 如果加d.ts以及async await如何使用 demo,只有代码,文字后续补充...
  10. 热血动漫番太好看了!用Python爬取了1T的动漫,内存都爆了
  11. 关于文件的存储——windows和Linux比较
  12. 重装Win10系统(加破解)+装Ubuntu18.04双系统
  13. 【深度学习技术】小样本医学影像的深度学习关键技术之深度模型的可解释性
  14. java seek_java中seek()的用法
  15. golang中的dns问题
  16. 战国李悝的“识人五法
  17. 摇身一变,ADSL猫进化为无线路由器
  18. WMS系统(一)成品入库需求分析
  19. 第一章 神经网络如何工作(附Python神经网络编程.pdf)
  20. Chrome渲染分析之Rendering工具使用

热门文章

  1. C语言学习——从零开始学编程(第三篇:选择与循环)
  2. 华清远见上海中心22071班 8.24作业
  3. 26岁亿万富翁创业日记曝光(二)
  4. 免越狱,iOS12系统也能使用联通volte,干就完了/越狱工具更新
  5. 解决下载妹子网图片数据不全的两种方法
  6. OpenCV实践之路——使用imread()函数读取图片的六种正确姿势
  7. 数论-模运算与同余的性质
  8. MQL4自编指标学习1
  9. 【Rust日报】 2019-06-01:知乎开源了Rust实现的搜索引擎 rucene
  10. ”舌上有龙泉,杀人不见血,生而为人,需得择善而行”