92国产精品视频_亚洲a级在线观看_国产精品电影观看_国产精品免费观看在线_精品伊人久久97_亚洲人成在线观_尤物九九久久国产精品的特点_成人激情在线播放_成人黄色大片在线免费观看_亚洲成人精品久久久_久久免费视频在线观看_久久精品国产一区_国产一区二区三区18_亚洲欧美中文字幕在线一区_日韩美女中文字幕_日韩视频免费在线

node系列之數據接口注冊接口的實現(token驗證登陸)

2019-10-31    seo達人

node系列之數據接口注冊登陸接口的實現

1、使用express腳手架創建項目

2、了解項目的目錄結構

3、準備數據庫相關文件

4、編寫注冊接口

5、編寫登陸接口

6、驗證登陸實現

7、預告

1、使用express腳手架創建項目

// 安裝腳手架,只需安裝一次

npm i express-generator -g

// 創建express項目

express myapp --view=ejs

cd myapp

// 安裝依賴

npm i 

// 安裝需要使用的模塊

// 數據庫模塊 用戶唯一id模塊 密碼加密模塊 token模塊

npm i mongoose node-uuid bcryptjs jsonwebtoken -S



2、了解項目的目錄結構

bin

www ------- 服務器啟動

node_modules ------- 項目的依賴文件

public ------- 靜態資源文件夾

images ------- 靜態圖片

javascripts ------- 靜態的js文件

stylesheets ------- 靜態的樣式表文件

routes ------- 路由文件

index.js ------- 默認的路由

users.js ------- 用戶相關的路由

views ------- 路由對應的頁面

index.ejs ------- 默認的首頁

error.ejs ------- 錯誤頁面

app.js ------- 使用中間件,注冊路由

package.json ------- 描述文件

3、準備數據庫相關文件

大勛在node系列之數據庫mongoose的封裝中給大家介紹了如何封裝mongoose,可以先行查看如何封裝,封裝的文件夾為sql,如果不想看的,可以直接通過網盤下載該文件夾



將該sql文件放置項目的跟目錄下


  • myapp

    - sql

    - collection

    users.js

    db.js

    index.js



    4、編寫注冊接口

    目標文件: myapp/routes/users.js



    實現思路:使用post提交數據的方式,先以手機號查詢有沒有該用戶,如果有該用戶,提示用戶該賬號已經注冊過了;如果沒有該用戶,則可以完成注冊,首先得將密碼加密,加密完成后插入數據庫



    代碼實現:



    // 找到用戶集合

    var User = require('./../sql/collection/users');

    // 找到數據庫封裝文件

    var sql = require('./../sql');

    // 狀態碼的封裝

    var utils = require('./../utils')

    // 用戶唯一標識的id

    var uuid = require('node-uuid');

    // 密碼加密模塊

    var bcrypt = require('bcryptjs');

    var salt = bcrypt.genSaltSync(10); // 加密級別



    // 實現注冊接口 -- post提交方式

    router.post('/register', (req, res, next) => {

      // 1、先獲取表單信息

      let { username, password, tel } = req.body;

      // 2、根據手機號查詢 用戶集合中是否有該用戶,如果有,返回有該賬戶,如果沒有注冊繼續

      sql.find(User, { tel }, { id: 0 }).then(data => {

        // 2.1 判斷有沒有該用戶

        if (data.length === 0) {

          // 2.2 沒有該用戶----繼續完成注冊操作

          // 2.2.1 生成用戶的id

          let userid = 'users
    ' + uuid.v1();

          // 2.2.2 對密碼加密

          password = bcrypt.hashSync(password, salt)

          // 2.2.3 插入數據庫

          sql.insert(User, { userid, username, password, tel}).then(() => {

            res.send(utils.registersuccess)

          })

        } else {

          // 2.3 已有該用戶

          res.send(utils.registered)

        }

      })

    })



    附 狀態碼封裝模塊 myapp/utils/index.js

    module.exports = {

      registered: {

        code: '10000',

        message: '該用戶已注冊,請直接登錄' 

      },

      registersuccess: {

        code: '10101',

        message: '注冊成功' 

      }

    }



    5、編寫登陸接口

    目標文件 myapp/routes/users.js

    實現思路:根據手機號查詢有沒有該用戶,如果沒有,提示用戶未注冊,如果有該用戶,使用bcryptjs模塊驗證密碼的有效性,如果有效,生成token,返回給前端相應的token值。

    var jwt = require('jsonwebtoken');

    // 實現登陸功能

    router.post('/login', (req, res, next) => {

      // 1、獲取表單信息

      let { tel, password } = req.body;

      // 2、依據手機號查詢有沒有該用戶

      sql.find(User, { tel }, { _id: 0 }).then(data => {

        // 2.1 判斷有么有該用戶

        if (data.length === 0) {

          // 2.2 沒有該用戶

          res.send(utils.unregister)

        } else {

          // 2.3 有該用戶,驗證密碼

          // 2.3.1 獲取數據庫中的密碼

          let pwd = data[0].password;

          // 2.3.2 比較 輸入的 密碼和數據庫中的密碼

          var flag = bcrypt.compareSync(password, pwd) // 前為輸入,后為數據庫

          if (flag) {

            // 2.3.3 密碼正確,生成token

            let userid = data[0].userid

            let username = data[0].username

            let token = jwt.sign({ userid, username }, 'daxunxun', {

              expiresIn: 606024// 授權時效24小時

            })

            res.send({

              code: '10010',

              message: '登陸成功',

              token: token

            })

          } else {

            // 2.3.4 密碼錯誤

            res.send({

              code: '10100',

              message: '密碼錯誤'

            })

          }

        }

      })

    })



    6、驗證登陸實現

    目標文件: myapp/app.js

    實現思路:很多的數據請求都需要登陸之后才能獲取到,在此統一封裝驗證登陸

    // 引入token模塊

    var jwt = require('jsonwebtoken');

    // 全局的路由匹配

    app.use((req, res, next) => {

     // 排除登陸注冊頁面

      if (req.url !== '/users/login' && req.url !== '/users/register') {

      // 不同形式獲取token值

        let token = req.headers.token || req.query.token || req.body.token;

        // 如果存在token ---- 驗證

        if (token) {

          jwt.verify(token, 'daxunxun', function(err, decoded) {

            if (err) {

              res.send({ 

                code: '10119', 

                message: '沒有找到token.' 

              });

            } else {

              req.decoded = decoded;  

              console.log('驗證成功', decoded);

              next()

            }

          }) 

        } else { // 不存在 - 告訴用戶---意味著未登錄

          res.send({ 

            code: '10119', 

            message: '沒有找到token.' 

          });

        }

      } else {

        next()

      }

    })




日歷

鏈接

個人資料

藍藍設計的小編 http://www.skdbbs.com

存檔

92国产精品视频_亚洲a级在线观看_国产精品电影观看_国产精品免费观看在线_精品伊人久久97_亚洲人成在线观_尤物九九久久国产精品的特点_成人激情在线播放_成人黄色大片在线免费观看_亚洲成人精品久久久_久久免费视频在线观看_久久精品国产一区_国产一区二区三区18_亚洲欧美中文字幕在线一区_日韩美女中文字幕_日韩视频免费在线
日本久久久久久久久久久| 久久免费视频在线观看| 日本电影亚洲天堂| 91社影院在线观看| 欧美精品做受xxx性少妇| 伊人成人开心激情综合网| 国产精品欧美风情| 成人性教育视频在线观看| 国产伦精品免费视频| 自拍偷拍亚洲精品| 91久久久亚洲精品| 亚洲成人av在线| 成人在线一区二区| 亚洲国产成人久久| 国产亚洲精品成人av久久ww| 国产日韩精品电影| 国产精品91久久久| 日韩欧美国产一区二区| 亚洲欧美激情四射在线日| 91精品国产91久久久久久久久| 欧美激情亚洲激情| 成人免费自拍视频| 92看片淫黄大片欧美看国产片| 日本不卡高字幕在线2019| 久久久久99精品久久久久| 久久精品视频在线播放| 国产日韩在线播放| 日韩中文av在线| 精品久久久久久久久久国产| 亚洲男女自偷自拍图片另类| 成人精品在线观看| 成人黄色激情网| 中文字幕在线日韩| 18一19gay欧美视频网站| 黑人巨大精品欧美一区免费视频| 久久久久国产视频| 国产九九精品视频| 亚洲aⅴ男人的天堂在线观看| 久久久久久久999| 欧美另类69精品久久久久9999| 欧美做受高潮1| 欧美专区国产专区| 国产日产欧美a一级在线| 91chinesevideo永久地址| 欧美日韩性视频在线| 日韩视频在线免费| 69av在线播放| 久久久久久com| 亚洲国产成人久久综合一区| 在线观看久久久久久| 欧美日韩国产123| 久久97久久97精品免视看| 人妖精品videosex性欧美| 亚洲精品天天看| 国内精品美女av在线播放| 久久国产精品久久国产精品| 欧美激情欧美激情在线五月| 亚洲精品久久视频| 久久精品电影网| 日韩在线免费av| …久久精品99久久香蕉国产| 国产精品视频一| 日韩欧美在线视频日韩欧美在线视频| 岛国视频午夜一区免费在线观看| 久久成人这里只有精品| 亚洲免费av网址| 久久久久久国产精品| 久久久久久久国产| 日韩免费在线观看视频| 国产精品免费观看在线| 亚洲精品动漫100p| 成人精品久久久| 一本色道久久88精品综合| 久久天天躁狠狠躁夜夜爽蜜月| 国产精品久久久久秋霞鲁丝| 国产精品白丝av嫩草影院| 日本精品免费一区二区三区| 日韩免费观看在线观看| 久久久午夜视频| 亚洲级视频在线观看免费1级| 亚洲成人教育av| 91精品国产综合久久香蕉的用户体验| 揄拍成人国产精品视频| 国产精品欧美久久久| 成人免费高清完整版在线观看| 国模gogo一区二区大胆私拍| 国产精品久久久久久亚洲影视| 久久99久久99精品免观看粉嫩| 欧美成人网在线| 欧美日韩成人网| 日韩中文字幕久久| 中文字幕欧美亚洲| 欧美第一黄网免费网站| 日韩高清电影好看的电视剧电影| 亚洲人成欧美中文字幕| 另类美女黄大片| 91av成人在线| 久久亚洲精品成人| 欧美黑人性生活视频| 国产精品自产拍在线观看| 欧美在线观看一区二区三区| 久久综合88中文色鬼| 日韩一区二区精品视频| 欧美成人中文字幕在线| 日韩中文娱乐网| 欧美人成在线视频| 亚洲欧美日韩在线一区| 亚洲欧美综合v| 国产精品揄拍500视频| 国产欧美一区二区白浆黑人| 久久人人爽国产| 国产成人久久久| 欧美日韩精品在线视频| 亚洲精品久久久一区二区三区| 九色成人免费视频| 欧美国产欧美亚洲国产日韩mv天天看完整| 成人在线小视频| 中文字幕在线看视频国产欧美在线看完整| 欧美日韩国产成人在线观看| 精品国偷自产在线视频99| 永久555www成人免费| 国产乱人伦真实精品视频| 91人成网站www| 亚洲欧美国产精品| 国产欧美精品在线播放| 日韩av电影中文字幕| 亚洲精品美女在线观看播放| 久久国产视频网站| 国产欧美va欧美va香蕉在线| 精品久久久久久久久久久| 日韩黄色av网站| 日韩美女写真福利在线观看| 北条麻妃一区二区三区中文字幕| 久久综合五月天| 欧美一级bbbbb性bbbb喷潮片| 久久国产精品久久国产精品| 国产精品极品美女粉嫩高清在线| 亚洲精品不卡在线| 久久久久久成人精品| 在线播放国产一区中文字幕剧情欧美| 95av在线视频| 久久6精品影院| 国产视频丨精品|在线观看| 欧美精品日韩www.p站| 久久久噜噜噜久久| 日韩中文字幕国产| 伊人一区二区三区久久精品| 亚洲www永久成人夜色| 亚洲3p在线观看| 热re91久久精品国99热蜜臀| 日韩hd视频在线观看| 欧美大片欧美激情性色a∨久久| 狠狠躁夜夜躁人人躁婷婷91| 欧美又大粗又爽又黄大片视频| 青草热久免费精品视频| 日韩视频在线观看免费| 亚洲欧美日韩中文在线制服| 亚洲丝袜一区在线| 91九色国产社区在线观看| 亚洲韩国欧洲国产日产av| 黑人巨大精品欧美一区免费视频| 欧美激情性做爰免费视频| 国产欧美va欧美va香蕉在| 色婷婷久久一区二区|