5分钟了解 NodeJS 密码加密 + Token生成 jsonwebtoken &bcryptjs
// 导入所需模块
const jwt = require('jsonwebtoken');
const bcrypt = require('bcryptjs');
// 用户注册函数
const signup = async (username, password) => {
// 使用bcryptjs生成密码哈希
const salt = await bcrypt.genSalt(10);
const hashedPassword = await bcrypt.hash(password, salt);
// 创建token
const token = jwt.sign({ username: username }, 'secret', { expiresIn: '1h' });
// 返回token和加密后的密码
return {
username: username,
password: hashedPassword,
token: token
};
};
// 用户登录函数
const signin = async (username, password, hashedPassword) => {
// 比较提供的密码和数据库中的密码哈希
const isPasswordMatch = await bcrypt.compare(password, hashedPassword);
// 如果密码匹配,生成token
if (isPasswordMatch) {
const token = jwt.sign({ username: username }, 'secret', { expiresIn: '1h' });
return token;
}
// 如果密码不匹配,返回错误
return '密码错误';
};
// 导出signup和signin函数
module.exports = { signup, signin };
这段代码展示了如何在Node.js中使用jsonwebtoken
和bcryptjs
来处理用户注册和登录过程中的密码加密和Token生成。在用户注册时,使用bcrypt.genSalt
和bcrypt.hash
方法生成密码哈希,并使用jwt.sign
方法生成Token。在用户登录时,使用bcrypt.compare
方法比较提供的密码和数据库中的密码哈希,如果匹配则生成Token。
评论已关闭