如何在Cloud Functions上将admin.auth()。createUser()与哈希密码一起使用?

时间:2019-03-20 16:55:30

标签: firebase hash firebase-authentication google-cloud-functions

我正在使用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中获得一种方法来在客户端加密哈希值,是否有一种方法可以在服务器端还原密码?

我在互联网上搜索了答案,但找不到与该主题有关的任何内容,难道这就是散列密码绝对错误的方法吗?如果是这样,在这种情况下有什么好的做法?

0 个答案:

没有答案