Node.js+express+MySQL仿美团注册登录绑定第三方登录
来源:互联网 发布:单片机程序开发 编辑:程序博客网 时间:2024/05/19 16:23
原文连接
准备
在开始做这个前,希望你已经配置好的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。后台人员我就不吐槽了。我都想找他把数据库的地址用户名和密码
要过来,我自己写后台算了。
要学习的还有很多,遇见问题不要怕,仔细的看报错信息,自己先静下心来思考,看文档。不懂再上网搜索。
1 1
- Node.js+express+MySQL仿美团注册登录绑定第三方登录
- Node.js+Express+MySql实现用户登录注册
- Node.js实现GitHub第三方登录
- 基于Node.js+express+MySQL+Bootstrap实现的简单登录注册
- Node.js基于express搭建注册登录功能
- Node.js+Express+MongoDB实现简单登录注册功能
- node学习 express + mysql + ejs实现注册登录
- 用node和express连接mysql实现登录注册
- Node+Express+MongoDB实现登录注册功能
- dz论坛登录注册-dz论坛第三方登录注册
- node.js基于express框架搭建一个简单的注册登录Web功能
- 例子:实现最新版本Node.js中Express+mongodb的登录注册页面
- django 注册、登录、第三方接口程序
- Android中登录注册(第三方)
- js 实现网站 第三方 qq 登录
- (NodeJS学习文章收集三) node.js基于express框架搭建一个简单的注册登录Web功能
- Node.js实战:Express实现简单后台登录系统
- javaEE SSH框架 qq第三方登录及用户绑定
- 算法提高 最小乘积(提高型)
- Spannable让文字秀起来
- P1414 又是毕业季2
- ACM测试-L - 第几天?
- 《数学之美》读书笔记(五)
- Node.js+express+MySQL仿美团注册登录绑定第三方登录
- java web 中上传文件和下载文件代码片段
- 使用VisualGDB和OpenOCD调试STM32L0开发板
- 升压降压LDO或DCDC中降低纹波系数的几种方法
- php浓缩入门
- Win7 64位下PowerDesigner连接64位Oracle11g数据库
- AndroidStudio:java.util.concurrent.ExecutionExceptioncom.android.ide.common
- linux入门(type sodu)
- Git学习笔记