亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > JS > 正文

koa2 用戶注冊、登錄校驗與加鹽加密的實現方法

2024-05-06 16:53:31
字體:
來源:轉載
供稿:網友

加密與解密

 先介紹一下關于服務端用戶名跟密碼的存儲狀態,我們知道當前端在注冊一個新用戶時,會在表單內填入用戶名和密碼,并通過post請求提交到服務器,服務器再把用戶名和密碼從ctx.request.body中拿出來,存入到數據庫的一張表里。這張表通常會被命名為users。

  關鍵在于,服務器如何存入用戶名和密碼到數據庫。直接存?不可能的,這樣太不安全了,永遠不要在一張表中出現全部用戶名和密碼一覽無余的危險情況。

  所以比較好的處理方法是這樣的,服務器先對用戶的密碼進行加鹽加密,再存到數據庫。

  那密碼驗證呢?則是接收前端輸入的明文密碼,與數據庫中相應的加密密碼進行比對,如果正確,則表示登錄成功。注意:如果有人拿到這個加密的密碼,也是沒用的。因為比對正誤的方法已經在服務器寫死,只能是比對明文密碼與加密密碼是否吻合。如果接收到兩個一模一樣的加密密碼,驗證也不會通過。

  至于如何比對明文密碼與加密密碼,不用擔心,加密解密的方法都是一起配對生產的。bcryptjs就是這樣一款不錯的加解密工具。(因為在windows上安裝bcrypt會報錯,據說其他系統沒問題,所以改為安裝bcryptjs,其api和使用方法與bcrypt完全一樣)

koa2,用戶注冊,登錄校驗,加鹽加密

  我在一個js模塊中定義了兩個方法,一個加密,一個解密。在加密算法中,首先我們需要生成鹽,所謂鹽,就是先在明文密碼中混入一些無規則的字符。傳入的數字越大,代表混入的鹽越復雜。最后通過hashSync方法生成加密密碼并返回。而解密方法就更加簡單,直接調用封裝的compareSync方法進行明文密碼與加密密碼比對。

用戶注冊

  在服務端路由模塊,暴露一個register接口,用于接收前端注冊信息,對密碼進行加鹽加密,并存入數據庫的操作。

const router = require("koa-router")();const UserModel = require("../schema/user");const Crypt = require("./crypt");const jwt = require("jsonwebtoken");// 新增一名用戶router.post("/register", async ctx => { const UserEntity = new UserModel(ctx.request.body); UserEntity.password = Crypt.encrypt(UserEntity.password); await UserEntity.save()  .then(() => {   ctx.body = {    code: 200,    msg: "register successfuly"   };  })  .catch(() => {   ctx.body = {    code: 500,    msg: "register failed"   };  });});

(看一下我這段代碼,有幾個需要說明的地方:第一,我是通過userModel這一個模型的save方法將這條數據存入mongoDB數據庫中,至于model、schema的概念問題,先不在這里贅述;第二:存儲失敗的原因可能是網絡問題,服務端程序出錯,但最大的可能還是因為我在userSchema里定義了用戶名的不可重復性,也就是所謂的“該用戶名已存在”)。

  為了闡述方便,這里將userModel的定義代碼貼出來:

koa2,用戶注冊,登錄校驗,加鹽加密

登錄校驗

  讓我們回到服務端路由模塊,看下怎樣去完成一個登錄校驗。

// 登錄校驗router.post("/login", async ctx => { const data = ctx.request.body; await UserModel.findOne({ account: data.account })  .then(res => {   const checkPassword = Crypt.decrypt(data.password, res.password);   if (checkPassword) {    const token = jwt.sign({ account: res.account }, "zhangnan", {     expiresIn: "2h"    });    ctx.body = { code: 200, msg: "successfuly login", token: token };   } else {    ctx.body = { code: 500, msg: "wrong password" };   }  })  .catch(() => {   ctx.body = { code: 501, msg: "user does not exist" };  });});

  首先,我們根據用戶輸入的用戶名去數據庫查找用戶信息,如果查不到,說明用戶名不存在,這是第一層邏輯。

  如果查到了,則調用剛剛定義好的解密方法進行明文密碼與加密密碼比對,如錯誤,則告訴前端密碼錯誤;如正確,則調用jwt的sign方法簽發一個token給前端。簽發的內容是用戶名;后面前端再發來請求并攜帶這個token時,如果驗證到token有效,那解析出來的用戶名就是服務器判斷前端請求身份的標識,它告訴服務器“我是xxx,且我處于已登錄狀態”。這是第二層邏輯。


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲www在线观看| 91爱视频在线| 精品精品国产国产自在线| 亚洲精品美女久久| 亚洲欧美福利视频| 日韩精品视频在线免费观看| 亚洲最新在线视频| 欧美美女18p| 欧美亚州一区二区三区| 亚洲开心激情网| 中文字幕久久精品| 国产精品视频网| 久久久久久久久久久人体| 九九热r在线视频精品| 精品日韩美女的视频高清| 国外色69视频在线观看| 久久在线免费视频| 亚洲一区二区久久久| 夜夜嗨av一区二区三区免费区| 欧美激情一级精品国产| 国产精品成人久久久久| 欧美午夜女人视频在线| 激情亚洲一区二区三区四区| 欧美情侣性视频| 免费99精品国产自在在线| 国产精品情侣自拍| 欧美日韩一区二区在线| 亚洲xxxx在线| 亚洲国产精品va在线看黑人动漫| 国产精品网站大全| 亚洲精品日韩丝袜精品| 国产亚洲精品久久久久久牛牛| 91系列在线播放| 日韩福利视频在线观看| 国产精品视频xxx| 国产精品91在线观看| 日韩在线免费观看视频| 精品久久久久久| 欧美激情在线有限公司| 福利视频导航一区| 97在线视频一区| 亚洲丁香久久久| 亚洲а∨天堂久久精品9966| 国产成人亚洲综合91| 欧美裸体xxxx极品少妇软件| 国产一区二区黑人欧美xxxx| 久久久久一本一区二区青青蜜月| 欧美极品少妇xxxxⅹ免费视频| 日韩视频亚洲视频| 国模吧一区二区三区| 国产亚洲视频中文字幕视频| 欧美成人激情视频免费观看| 亚洲精品视频久久| 最近2019好看的中文字幕免费| 日本欧美黄网站| 欧美成人精品在线播放| 精品久久久久久久久国产字幕| 精品中文字幕久久久久久| 国产精品第3页| 成人性生交大片免费看视频直播| 国产视频精品自拍| 亚洲护士老师的毛茸茸最新章节| 亚洲日韩中文字幕在线播放| 久久久国产一区二区| 久久久国产一区二区| 国产suv精品一区二区三区88区| 亚洲电影免费观看高清| 最新亚洲国产精品| 国产精品成av人在线视午夜片| 性欧美亚洲xxxx乳在线观看| 色综合久久悠悠| 91精品久久久久久久久久| 欧美激情在线观看| 亚洲美女免费精品视频在线观看| 亚洲激情在线观看视频免费| 欧美日韩午夜视频在线观看| 国产玖玖精品视频| 欧亚精品中文字幕| 亚洲性无码av在线| 最近2019中文字幕在线高清| 亚洲第一精品久久忘忧草社区| 国产精品日韩欧美| 日韩av综合网站| 日韩有码片在线观看| 国产成人精品视| 国产69精品99久久久久久宅男| 欧美精品成人在线| 国产精品成人免费视频| 91久久精品久久国产性色也91| 日韩成人xxxx| 久久中文精品视频| 一本大道久久加勒比香蕉| 亚洲国产精品99久久| 国产噜噜噜噜久久久久久久久| 久久久国产精品免费| 亚洲性69xxxbbb| 欧美性猛交xxxx富婆弯腰| 国产精品久久久av久久久| 欧美午夜影院在线视频| 亚洲综合日韩中文字幕v在线| 日韩av在线网址| 日韩成人在线视频网站| 日韩在线视频观看正片免费网站| 精品国产福利在线| 亚洲伊人第一页| 日韩三级成人av网| 奇米成人av国产一区二区三区| 日韩美女视频在线观看| 中文字幕国产亚洲| 国内免费久久久久久久久久久| 成人免费视频xnxx.com| 久久视频在线直播| 国产精品免费观看在线| 欧美极品在线视频| 久久久久亚洲精品成人网小说| 亚洲一区二区三区sesese| 国产精品日韩久久久久| 亚洲欧美综合图区| 91沈先生作品| 欧美激情喷水视频| 成人精品一区二区三区电影黑人| 欧美丰满少妇xxxx| 日韩av免费一区| 中文字幕亚洲无线码在线一区| 日本不卡高字幕在线2019| 日韩中文在线观看| 日韩精品在线视频| 国产精品一区久久| 日韩高清免费观看| 国产精品久久久久久影视| 日韩精品在线观看视频| 欧美激情综合亚洲一二区| 国产不卡av在线免费观看| 欧美激情一区二区三区久久久| 中文字幕欧美日韩在线| 国产日韩一区在线| 日韩美女写真福利在线观看| 国产精品免费久久久久久| 韩曰欧美视频免费观看| 亚洲精品综合精品自拍| 亚洲成年网站在线观看| 亚洲一区中文字幕在线观看| 国产精品99久久久久久www| xvideos成人免费中文版| 欧美成人激情在线| 亚洲男女性事视频| 亚洲qvod图片区电影| 日韩av在线电影网| 国产日韩精品一区二区| 亚洲精品在线视频| 国产福利精品视频| 久久国产精品首页| 在线观看国产精品91| 日韩成人中文字幕| 欧美猛交免费看| 欧美大片免费观看在线观看网站推荐| 日韩中文字幕在线播放| 久久精品小视频| 国产成人97精品免费看片| 91精品国产高清久久久久久久久| 最近2019免费中文字幕视频三| 麻豆国产va免费精品高清在线| 亚洲天堂免费在线| 日本精品一区二区三区在线|