哈希是加密算法吗,哈希算法加密与解密
账号的密码比较私密。如果是明文传输,很容易被别人窃取,所以我们需要加密密码。这里我使用第三方模块bcrypt。
bcrypt所依赖的安装所需的环境。
python 2.xnode-gyp;M install-g node-gyp4。下面这个是窗口版,需要下载。
4.windows-构建-工具;npm安装-全局-生产窗口-构建-工具
//Import bcrypt const bcrypt=require( bcrypt );异步函数run () {//生成随机字符串//genSalt方法接收一个数值作为参数。//数值越大,生成的随机字符串复杂度越高。//数值越小,生成的随机字符串复杂度越低。//默认值为10//返回生成的随机字符串const salt=awaitbcrypt . gen salt(10);//加密密码//1。明文加密//2。random string//返回值为加密密码const result=awaitbcrypt . hash( 123456 ,salt);console . log(salt);console.log(结果);} run();在项目中引入加密。
在保存到数据库之前,需要在数据库文件(如user.js)中对密码进行加密和处理
异步函数create user(){ const salt=await bcrypt . gen salt(10);const pass=await bcrypt . hash( 123456 ,salt);const user=await user . create({用户名: wuwenfu ,邮箱: wuwenfu@itcast.cn ,密码:pass,角色: admin ,状态:0 });}因为我们加密了数据库中的密码,所以无法直接将用户输入的密码与数据库中的密码进行比对。我们需要加密用户传递的密码,然后与数据库中的密码进行比较。
if(user){ console . log(password);//将客户端传递的密码与用户信息中的密码进行比较。//真比较成功//假比较失败let is valid=awaitbcrypt . company(password,user . password);//如果密码比较成功if (isValid) {//登录成功//将用户名存储在请求对象req.username=user.username中;//重定向到用户列表页面RES . redirect(/admin/user );} else {//用户资源状态(400)。render (admin/error ,{msg:电子邮件地址或密码错误 })未找到}}
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。