koa2用戶注冊(cè)、登錄校驗(yàn)與加鹽加密的實(shí)現(xiàn)方法-創(chuàng)新互聯(lián)

加密與解密

成都創(chuàng)新互聯(lián)2013年開創(chuàng)至今,先為武隆等服務(wù)建站,武隆等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為武隆企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。

 先介紹一下關(guān)于服務(wù)端用戶名跟密碼的存儲(chǔ)狀態(tài),我們知道當(dāng)前端在注冊(cè)一個(gè)新用戶時(shí),會(huì)在表單內(nèi)填入用戶名和密碼,并通過post請(qǐng)求提交到服務(wù)器,服務(wù)器再把用戶名和密碼從ctx.request.body中拿出來,存入到數(shù)據(jù)庫(kù)的一張表里。這張表通常會(huì)被命名為users。

  關(guān)鍵在于,服務(wù)器如何存入用戶名和密碼到數(shù)據(jù)庫(kù)。直接存?不可能的,這樣太不安全了,永遠(yuǎn)不要在一張表中出現(xiàn)全部用戶名和密碼一覽無余的危險(xiǎn)情況。

  所以比較好的處理方法是這樣的,服務(wù)器先對(duì)用戶的密碼進(jìn)行加鹽加密,再存到數(shù)據(jù)庫(kù)。

  那密碼驗(yàn)證呢?則是接收前端輸入的明文密碼,與數(shù)據(jù)庫(kù)中相應(yīng)的加密密碼進(jìn)行比對(duì),如果正確,則表示登錄成功。注意:如果有人拿到這個(gè)加密的密碼,也是沒用的。因?yàn)楸葘?duì)正誤的方法已經(jīng)在服務(wù)器寫死,只能是比對(duì)明文密碼與加密密碼是否吻合。如果接收到兩個(gè)一模一樣的加密密碼,驗(yàn)證也不會(huì)通過。

  至于如何比對(duì)明文密碼與加密密碼,不用擔(dān)心,加密解密的方法都是一起配對(duì)生產(chǎn)的。bcryptjs就是這樣一款不錯(cuò)的加解密工具。(因?yàn)樵趙indows上安裝bcrypt會(huì)報(bào)錯(cuò),據(jù)說其他系統(tǒng)沒問題,所以改為安裝bcryptjs,其api和使用方法與bcrypt完全一樣)

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

用戶注冊(cè)

  在服務(wù)端路由模塊,暴露一個(gè)register接口,用于接收前端注冊(cè)信息,對(duì)密碼進(jìn)行加鹽加密,并存入數(shù)據(jù)庫(kù)的操作。

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"
  };
 });
});

標(biāo)題名稱:koa2用戶注冊(cè)、登錄校驗(yàn)與加鹽加密的實(shí)現(xiàn)方法-創(chuàng)新互聯(lián)
文章路徑:http://www.muchs.cn/article34/cdjipe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號(hào)面包屑導(dǎo)航、標(biāo)簽優(yōu)化、營(yíng)銷型網(wǎng)站建設(shè)、網(wǎng)站改版全網(wǎng)營(yíng)銷推廣

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司