當用戶在注冊的時候,注冊進去存到數據庫的密碼是明碼顯示的,這樣是不安全的,所以我們在注冊的時候可以使用MD5的加密方式將用戶的密碼進行加密后存進數據庫。
使用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后直接調用即可。
接下來進行注冊操作:
// 執行注冊
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')
})
});
這樣注冊進去后 在數據顯示的密碼就是加密后的:
Paste_Image.png
相對應的在登錄的時候,把用戶輸入的密碼按照同樣的方式加密后取數據庫進行比對,進行登錄操作:
// 登錄操作
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){ //數據庫與用戶輸入的比對
res.send("1");
}else {
res.send('-999');
}
})
});