Node.js+express+MySQL仿美团注册登录绑定第三方登录
原文连接
准备
在开始做这个前,希望你已经配置好的Node,express和MySQL的开发环境。也可以参考参考文章
开发环境的配置
- 新建项目
参考Mac下express的安装和新建项目 - mysql模块
在package.json
文件的dependencies
下加入下面的代码"mysql": "latest",
最终的效果:
然后cd
到项目所在的目录,在终端中执行npm install
,项目就会配置mysql模块。 - 新建数据库配置文件
在项目目录下新建一个db
目录,在目录项新建两个文件DBConfig.js
和usersql.js
效果如下:
其中的DBConfig.js
是数据库的配置文件,只要代码如下:
module.exports =
{ mysql: { user: 'root',password: '123456',database: 'userinfo'}
};
就是数据库的用户名,密码和数据库名。如果你的数据库和代码不再一个电脑就需要数据库的地址。
usersql.js
就是实现后台业务所需要的mysql的操作语句
var UserSQL = { insert:'INSERT INTO user(username,password,date,type,openid) VALUES(?,?,?,?,?)', bangding:'UPDATE user SET type = ?,openid = ? WHERE username = ? AND password = ? ',queryAll:'SELECT * FROM user', getUserByOpenid:'SELECT * FROM user WHERE openid = ? ', getUserByInfo:'SELECT * FROM user WHERE username = ? AND password = ? ',deleteUserByInfo:'DELETE FROM user WHERE username = ? AND password = ? ',
};
module.exports = UserSQL;
实现后台业务
- 业务流程
在实现业务之前还是先看看流程,我在用了美团app后自己画了一个美团登录和绑定第三方的简单流程。其中注册流程也简化了。
关于注册我也简化了,就是输入账号和密码就可以注册。 - 代码实现
我的具体业务是写在users.js
前提是已经建立了对应的数据库和表。
首先要引入mysql依赖
// 导入MySQL模块
var dbConfig = require('../db/DBConfig');
var User = require('../db/usersql');var mysql = require('mysql'); // 引入mysql依赖
var client = mysql.createConnection(dbConfig.mysql); // 建立连接
- 首先看看注册流程:
1.用户输入用户名和密码,点击注册按钮,发送注册请求;
2.后台根据用户提交的用户名和密码去数据区查找有没有对应的用户,- 没有,注册成功,把新用户插入数据库 同时记录注册时间
- 有,注册失败,用户已经存在
// 注册接口
router.all('/user/register', function(req, res, next){if (req.method == "POST") {var param = req.body;} else{var param = req.query || req.params; }client.query(User.getUserByInfo,[param.username,param.password],function (err, results){if (err){throw err}else{// 数据库不存在 就注册成功if (results.length == 0) {// 把新用户插入数据库client.query(User.insert,[param.username,param.password,getDataStr(),'',''],function (err, results) {if(err){throw err}else{res.end(JSON.stringify({status:'100',msg:'注册成功!'}));}})} else{ // 数据库存在就注册失败res.end(JSON.stringify({status:'101',msg:'该用户名已经被注册'})); }}})
});
- 登录流程
登录就是更具用户提交过来的用户名和密码去数据区比较,用户名和密码都相同就登录,否则就提示用户名或密码错误。
当然这是简单的,还要做的就是是否存在这个用户。
// 登录接口
router.all('/user/login', function(req, res, next){if (req.method == "POST") {var param = req.body;} else{var param = req.query || req.params; } client.query(User.getUserByInfo,[param.username,param.password],function (err, results){if (err){throw err}else{// 数据库存在 if (results.length == 0) {res.end(JSON.stringify({status:'102',msg:'用户名或密码错误'}));} else{ if (results[0].username == param.username && results[0].password == param.password) {res.end(JSON.stringify({status:'100',msg:'登录成功'}));}}}})
});
- 第三方登录
第三方登录有这么两步:
根据用户的第三方用户唯一标识,这里统称openid
去数据库查找- 数据库的某个用户的
openid
和这个相等就返回注册成功 - 数据库没有就,跳转到绑定页面,做绑定用户名的操作
这里,为了前台能够判断用户是否绑定了,我给了一个flag
字段。
- 数据库的某个用户的
// 第三方登陆接口
router.all('/user/thirdlogin', function(req, res, next){if (req.method == "POST") {var param = req.body;} else{var param = req.query || req.params; } console.log(param.openid);client.query(User.getUserByOpenid,[param.openid],function (err, results){if (err){throw err}else{// 数据库不存在 就跳转绑定 flag=1 需要绑定 flag=2 // 不需要绑定if (results.length == 0) {res.end(JSON.stringify({status:'100',msg:'操作成功',flag:'1'}));} else{ // 数据库存在就登录成功res.end(JSON.stringify({status:'100',msg:'登录成功',flag:'2'}));}}})
});
- 绑定用户
这个就没什么了。就是更新用户的数据
// 绑定接口
router.all('/user/bangding', function(req, res, next){if (req.method == "POST") {var param = req.body;} else{var param = req.query || req.params; }client.query(User.getUserByInfo,[param.username,param.password],function (err, results){if (err){throw err}else{// 更新用户信息client.query(User.bangding,[param.type,param.openid,param.username,param.password],function (err, results) {if(err){throw err}else{res.end(JSON.stringify({status:'100',msg:'绑定成功!'}));}})}})
});
测试
以上的流程基本是最简单的了。
测试可以在浏览器测试,根据接口输入对应的参数即可。我是自己写了一个简单的测试app。
我是事先在数据库插入了一些数据。
app效果:
总结
以前一直都是写iOS的app或是H5的app。这次自己独自写前后台。算是一下小小的突破。
前后台一起写的时候,发现前后台,需要很多的配合。以前只是接口不对了就找后台修改。这次就是自己修改了。
这需要很多的配合。就像月初做那个物流管理的app。后台人员我就不吐槽了。我都想找他把数据库的地址用户名和密码
要过来,我自己写后台算了。
要学习的还有很多,遇见问题不要怕,仔细的看报错信息,自己先静下心来思考,看文档。不懂再上网搜索。
Node.js+express+MySQL仿美团注册登录绑定第三方登录相关推荐
- 跟李宁老师做项目:小程序版网上商城(Node.js + Express + MySQL)-李宁-专题视频课程...
跟李宁老师做项目:小程序版网上商城(Node.js + Express + MySQL)-8799人已学习 课程介绍 本课程采用的技术包括小程序开发.Node.js.Express和M ...
- node.js + express + mysql 简单运用
主要是学习下如何简单得运用,自己可以写出一个后台 目录 初始化一个项目 创建web服务 get请求 post put delete 三个请求 引入ejs 模板 中间件 cookie session 路 ...
- 如何高效快速地在Linux系统上部署Node.js+Express+MySQL的开发环境(桌面可视化)...
一.前言 可能一些初级前端和我一样,在有些项目需要前后台都一个人打通搞定的时候,对于后台和开发环境的部署还是比较头疼的.特别是Linux系统,由于没有系统接触过,也不太喜欢去记背那么多命令,大部分命令 ...
- 基于Node.js+Express+MySQL的爱心助农电商管理系统的设计与实现(附源码)
摘要 2020年新型冠状病毒突如其来,在疫情的影响下,全国各个地区的农产品销售均不同程度的出现了需求信息不畅,农产品管理困难,订单物流模糊,农产品滞销等问题的出现.与此同时2020年也是我国全面小康, ...
- 视频教程-项目实战视频课程:美团小程序(Node.js+Express+支付)-微信开发
项目实战视频课程:美团小程序(Node.js+Express+支付) 东北大学计算机专业硕士研究生,欧瑞科技创始人&CEO,曾任国内著名软件公司项目经理,畅销书作者,企业IT内训讲师,CSDN ...
- 项目实战视频课程:美团小程序(Node.js+Express+支付)-李宁-专题视频课程
项目实战视频课程:美团小程序(Node.js+Express+支付)-473人已学习 课程介绍 小程序视频教程,本课程实现了美团小程序的核心部分.采用异步的方式,通过AJAX从服务端获 ...
- Node.js+Express+Vue+MySQL+axios的项目搭建
1 基本搭建 创建vue项目之前需要先安装Node.js和MySQL数据库 1.1 vue脚手架安装 npm i vue -g npm i @vue/cli -g//初始化vue项目 vue crea ...
- Node.js Express+Mongodb 项目实战
Node.js Express+Mongodb 项目实战 这是一个简单的商品管理系统的小项目,包含的功能还算挺全的,项目涵盖了登录.注册,图片上传以及对商品进行增.删.查.改等操作,对于新手来说是个很 ...
- TWaver HTML5 + Node.js + express + socket.io + redis(六)
接上一篇TWaver HTML5 + Node.js + express + socket.io + redis(五), 这一篇将讲解如何用模版生成html页面, 如何验证用户登录, 您将了解到: 1 ...
最新文章
- K-近邻算法之交叉验证,网格搜索
- 智能车竞赛技术报告 | 节能信标组 - 洛阳理工学院 - Since 2021
- 如何跟踪log4j漏洞原理及发现绕WAF的tips
- 目标检测网络中的 bottom-up 和 top-down理解
- 6.4 Ext.core.DomQuery 单实例查询选择器,通过正则表达式查找DOM或者HTM
- Android用户界面设计:布局基础
- 数据库安全风险行为 目录 1. 数据库安全风险行为	2 1.1. Sql注入SQLi)攻击行为	2 1.2. . 过多的、不适当的和未使用的特权	2 1.3. 2. 权限滥用(数据库系统管理员和开
- 计算机基础中的函数,《计算机基础》中EXCEL函数的简单使用综述
- (已更新)短视频去水印解析客户端小程序源代码
- 聊一聊输入阻抗、输出阻抗和阻抗匹配
- 27种主流编程语言分类及优劣
- java爬虫音乐搜索_爬虫爬取抖音热门音乐 - MS_Andrew的个人空间 - OSCHINA - 中文开源技术交流社区...
- 如何用python编程编一个可以盗qq的_利用 Python 编写一个类似 QQ 截图的小工具应该怎么入手?...
- Web Directions South 2012的四个大创意
- python3中的@abstractmethod的用法
- 域 用户和计算机名,域环境中计算机名称解析
- js getday()获取值不对
- 文本分割之水平投影法基于OpenCV(python)版实现
- Simulink之S-function函数笔记之一
- 副业怎么样通过手游达到月入过万
热门文章
- 1.模态分析是什么?为什么采用模态分析?
- 南京大学计算机考研复试线2021,南京大学2021年考研复试基本分数线已发布
- Sicily 1031. Campus
- c语言版计算坐标方位角,坐标方位角算法在GIS中应用(最后修改).doc
- Could not execute JDBC batch update异常的解决办法
- 电子电路:电流镜电路
- 计算机科学与技术的心理测试考试,考试中的心理测评是什么?
- xcode快捷方式 一 快速找到对应文件
- 第二章:python必备基础语法
- keplergl,一款超炫的地理数据可视化神器!