5分钟了解 NodeJS 密码加密 + Token生成 jsonwebtoken &bcryptjs
    		       		warning:
    		            这篇文章距离上次修改已过439天,其中的内容可能已经有所变动。
    		        
        		                
                
// 导入所需模块
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。
评论已关闭