我正在使用Angular构建前端的Web应用程序,并使用Cloud Functions构建后端的东西。还使用Firebase身份验证注册和登录用户。要保留数据,我正在使用Cloud Firestore。
寄存器部分用于Cloud Functions。我在那里调用admin.auth()。createUser()来设置Auth用户以及添加到Cloud Firestore的用户文档的用户凭据。
我的问题是,在向Function发送HTTP请求之前,我会在前端哈希密码值。出于安全原因,我这样做。但是如何恢复哈希值,以便可以将原始密码写入createUser()?
实际上,我保存了哈希密码,此后我无法使用创建的用户登录,因为它是哈希值。
我在Cloud Functions中的功能
exports.createUser = async (req, res) => {
try {
const user = req.body;
console.log(user.password);
const userRecord = await admin.auth().createUser({
email: user.mail,
emailVerified: false,
password: user.password,
displayName: user.firstname + ' ' + user.lastname,
photoURL: "http://www.example.com/12345678/photo.png",
disabled: false
}).then(async (userRecord) => {
console.log(userRecord.password);
console.log(userRecord);
return await userCollection.doc(userRecord.uid).set({
uid: userRecord.uid,
firstname: user.firstname,
lastname: user.lastname,
photoURL: userRecord.photoURL,
dateOfBirth: user.dateOfBirth,
sex: user.sex,
city: user.city,
activities: user.activities,
offers: user.offers
})
})
console.log("Successfully created new user:");
return res.status(200).send(userRecord);
}
catch (error) {
console.log("Error creating new user:", error);
return res.send(false);
}
前端的哈希看起来像这样(使用ts-md5):
password: Md5.hashStr(this.registerForm.value.registerFormPassword)
是否有一种方法可以反转哈希值,或者从Firebase Auth中获得一种方法来在客户端加密哈希值,是否有一种方法可以在服务器端还原密码?
我在互联网上搜索了答案,但找不到与该主题有关的任何内容,难道这就是散列密码绝对错误的方法吗?如果是这样,在这种情况下有什么好的做法?