當(dāng)用戶在注冊的時候蝴韭,注冊進(jìn)去存到數(shù)據(jù)庫的密碼是明碼顯示的卵慰,這樣是不安全的梢为,所以我們在注冊的時候可以使用MD5的加密方式將用戶的密碼進(jìn)行加密后存進(jìn)數(shù)據(jù)庫萨咕。
使用MD5要引入var crypto = require("crypto");
這個模塊;
在這里將MD5封裝成一個模塊稱為:MD5.js
/**
* Created by Danny on 2015/9/26 10:05.
*/
var crypto = require("crypto");
module.exports = function(mingma){
var md5 = crypto.createHash('md5');
var password = md5.update(mingma).digest('base64');
return password;
};
在后面使用的時候冀宴,只要require后直接調(diào)用即可灭贷。
接下來進(jìn)行注冊操作:
// 執(zhí)行注冊
app.post('/doRegister',function (req,res) {
var username = req.body.username;//獲取用戶輸入的username
var password = req.body.password;//獲取用戶輸入的password
password = md5(password);//加密后的password,這里可以無限的加密
db.insertOne("user",{
"username":username,
"password":password
},function (err,result) {
if(err){
res.send('-1')
}
res.send('1')
})
});
這樣注冊進(jìn)去后 在數(shù)據(jù)顯示的密碼就是加密后的:
Paste_Image.png
相對應(yīng)的在登錄的時候略贮,把用戶輸入的密碼按照同樣的方式加密后取數(shù)據(jù)庫進(jìn)行比對甚疟,進(jìn)行登錄操作:
// 登錄操作
app.post('/login',function (req,res) {
var username = req.body.username;
var password = req.body.password;
password = md5(password);//用戶輸入完,加密后的password
db.find("user",{"username":username},function (err,result) {
console.log(result[0].password);
if(result.length==0){
res.send('用戶不存在')
} else if(result[0].password==password){ //數(shù)據(jù)庫與用戶輸入的比對
res.send("1");
}else {
res.send('-999');
}
})
});