日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

Node.js+express+MySQL仿美团注册登录绑定第三方登录

發(fā)布時間:2024/1/8 53 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Node.js+express+MySQL仿美团注册登录绑定第三方登录 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

原文連接

準(zhǔn)備

在開始做這個前,希望你已經(jīng)配置好的Node,express和MySQL的開發(fā)環(huán)境。也可以參考參考文章

開發(fā)環(huán)境的配置

  • 新建項目
    參考Mac下express的安裝和新建項目
  • mysql模塊
    在package.json文件的dependencies下加入下面的代碼"mysql": "latest",
    最終的效果:

    然后cd到項目所在的目錄,在終端中執(zhí)行npm install,項目就會配置mysql模塊。
  • 新建數(shù)據(jù)庫配置文件
    在項目目錄下新建一個db目錄,在目錄項新建兩個文件DBConfig.js和usersql.js
    效果如下:

    其中的DBConfig.js是數(shù)據(jù)庫的配置文件,只要代碼如下:
module.exports = { mysql: { user: 'root',password: '123456',database: 'userinfo'} };

就是數(shù)據(jù)庫的用戶名,密碼和數(shù)據(jù)庫名。如果你的數(shù)據(jù)庫和代碼不再一個電腦就需要數(shù)據(jù)庫的地址。
usersql.js就是實現(xiàn)后臺業(yè)務(wù)所需要的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;

實現(xiàn)后臺業(yè)務(wù)

  • 業(yè)務(wù)流程
    在實現(xiàn)業(yè)務(wù)之前還是先看看流程,我在用了美團(tuán)app后自己畫了一個美團(tuán)登錄和綁定第三方的簡單流程。其中注冊流程也簡化了。

    關(guān)于注冊我也簡化了,就是輸入賬號和密碼就可以注冊。
  • 代碼實現(xiàn)
    我的具體業(yè)務(wù)是寫在users.js
    前提是已經(jīng)建立了對應(yīng)的數(shù)據(jù)庫和表。
    首先要引入mysql依賴
// 導(dǎo)入MySQL模塊 var dbConfig = require('../db/DBConfig'); var User = require('../db/usersql');var mysql = require('mysql'); // 引入mysql依賴 var client = mysql.createConnection(dbConfig.mysql); // 建立連接
  • 首先看看注冊流程:
    1.用戶輸入用戶名和密碼,點擊注冊按鈕,發(fā)送注冊請求;
    2.后臺根據(jù)用戶提交的用戶名和密碼去數(shù)據(jù)區(qū)查找有沒有對應(yīng)的用戶,
  • 沒有,注冊成功,把新用戶插入數(shù)據(jù)庫 同時記錄注冊時間
  • 有,注冊失敗,用戶已經(jīng)存在
// 注冊接口 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{// 數(shù)據(jù)庫不存在 就注冊成功if (results.length == 0) {// 把新用戶插入數(shù)據(jù)庫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{ // 數(shù)據(jù)庫存在就注冊失敗res.end(JSON.stringify({status:'101',msg:'該用戶名已經(jīng)被注冊'})); }}}) });
  • 登錄流程
    登錄就是更具用戶提交過來的用戶名和密碼去數(shù)據(jù)區(qū)比較,用戶名和密碼都相同就登錄,否則就提示用戶名或密碼錯誤。
    當(dāng)然這是簡單的,還要做的就是是否存在這個用戶。
// 登錄接口 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{// 數(shù)據(jù)庫存在 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:'登錄成功'}));}}}}) });
  • 第三方登錄
    第三方登錄有這么兩步:
    根據(jù)用戶的第三方用戶唯一標(biāo)識,這里統(tǒng)稱openid去數(shù)據(jù)庫查找
  • 數(shù)據(jù)庫的某個用戶的openid和這個相等就返回注冊成功
  • 數(shù)據(jù)庫沒有就,跳轉(zhuǎn)到綁定頁面,做綁定用戶名的操作
    這里,為了前臺能夠判斷用戶是否綁定了,我給了一個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{// 數(shù)據(jù)庫不存在 就跳轉(zhuǎn)綁定 flag=1 需要綁定 flag=2 // 不需要綁定if (results.length == 0) {res.end(JSON.stringify({status:'100',msg:'操作成功',flag:'1'}));} else{ // 數(shù)據(jù)庫存在就登錄成功res.end(JSON.stringify({status:'100',msg:'登錄成功',flag:'2'}));}}}) });
  • 綁定用戶
    這個就沒什么了。就是更新用戶的數(shù)據(jù)
// 綁定接口 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:'綁定成功!'}));}})}}) });

測試

以上的流程基本是最簡單的了。
測試可以在瀏覽器測試,根據(jù)接口輸入對應(yīng)的參數(shù)即可。我是自己寫了一個簡單的測試app。
我是事先在數(shù)據(jù)庫插入了一些數(shù)據(jù)。
app效果:

總結(jié)

以前一直都是寫iOS的app或是H5的app。這次自己獨(dú)自寫前后臺。算是一下小小的突破。
前后臺一起寫的時候,發(fā)現(xiàn)前后臺,需要很多的配合。以前只是接口不對了就找后臺修改。這次就是自己修改了。
這需要很多的配合。就像月初做那個物流管理的app。后臺人員我就不吐槽了。我都想找他把數(shù)據(jù)庫的地址用戶名和密碼
要過來,我自己寫后臺算了。
要學(xué)習(xí)的還有很多,遇見問題不要怕,仔細(xì)的看報錯信息,自己先靜下心來思考,看文檔。不懂再上網(wǎng)搜索。

總結(jié)

以上是生活随笔為你收集整理的Node.js+express+MySQL仿美团注册登录绑定第三方登录的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。