哈希加密是单程加密方式: 1234=>abcd 在加密的密码中加入随机字符串可以增加密码被破解的难度
// 导入bcrypt模块 const bcrypt = require('bcrypt') // 生成随机字符串 gen => generate 生成 salt 盐 let salt = await bcrypt.genSalt(10) // 使用随机字符串对密码进行加密 let pass = await bcrypt.hash('明文密码',salt)
bcrypt 依赖的其他环境
python 2.x node-gyp npm install -g node-gyp windows-build-tools npm install --global --production windows-build-tools
bcrypt的基本使用
// 导入bcrypt const bcrypt = require('bcrypt'); async function run () { // 生成随机字符串 // genSalt方法接收一个数值作为参数 // 数值越大 生成的随机字符串复杂度越高 // 数值越小 生成的随机字符串复杂度越低 // 默认值是 10 // 返回生成的随机字符串 const salt = await bcrypt.genSalt(10); // 对密码进行加密 // 1. 要进行加密的明文 // 2. 随机字符串 // 返回值是加密后的密码 const result = await bcrypt.hash('123456', salt); console.log(salt); console.log(result); } run();
// 密码比对
let isEqual = await bcrypt.compare('明文密码', '加密密码');
在admin.js中引入功能
// 查询到了用户 if (user) { // 将客户端传递过来的密码和用户信息中的密码进行比对 // true 比对成功 // false 对比失败 let isValid = await bcrypt.compare(password, user.password); // 如果密码比对成功 if ( isValid ) { // 登录成功 // 将用户名存储在请求对象中 req.username = user.username; // res.send('登录成功'); req.app.locals.userInfo = user; // 重定向到用户列表页面 res.redirect('/admin/user'); } else { // 没有查询到用户 res.status(400).render('admin/error', {msg: '邮箱地址或者密码错误'}) } } else { // 没有查询到用户 res.status(400).render('admin/error', {msg: '邮箱地址或者密码错误'}) }
标签:加密,salt,await,密码,字符串,bcrypt From: https://www.cnblogs.com/wangxianwen/p/16727798.html