【发布时间】:2023-01-20 21:13:52
【问题描述】:
我正在创建一个管理面板,用户可以在其中注册、登录和更新他的信息。在注册用户信息时,我使用bcrypt库将密码加密存储在MongoDb中。但是,当我获取用户信息以将其置于更新形式时,它会给我一个长加密密码。
我想显示原始密码,以便用户可以查看和更新密码:
添加用户功能:
// Add USER
export const addUser = async (req, res) => {
try {
const {
name,
email,
password,
picturePath,
country,
role,
} = req.body;
const salt = await bcrypt.genSalt();
const passwordHash = await bcrypt.hash(password, salt);
const newUser = new User({
name,
email,
password: passwordHash,
picturePath,
country,
role
});
const savedUser = await newUser.save();
res.status(201).json(savedUser);
} catch (err) {
res.status(500).json({ error: err.message });
}
}
更新用户:
// UPDATE USER
export const updateUser = async (req, res) => {
try {
const { id, name, email, password, country, picturePath, role } = req.body;
const Updateuser = await User.updateOne({"_id": id}, {$set: {
name: name,
email: email,
country: country,
password: password,
picturePath: picturePath,
role: role
}});
const user = await User.findById(id);
const token = jwt.sign({ id: id }, process.env.JWT_SECRET);
res.status(200).json({token, user});
} catch (error) {
res.status(400).json({message: error.message});
}
}
【问题讨论】:
-
您无法获得原始密码,这就是使用 bcrypt 对其进行散列(而不是加密)的全部意义所在。存储密码是一个严重的安全风险。
-
您不能也不应该向用户显示他以前的密码。
标签: node.js reactjs mongodb bcrypt