如何在Firebase管理中比较提供的密码与用户的密码

zzwlnbp8  于 2023-04-22  发布在  其他
关注(0)|答案(1)|浏览(155)

我想比较提供的密码是否等于getUser密码
我已经尝试使用bcrypt,但我没有得到我想要的。

function(username,password) {
    admin.auth().getUserByEmail(username)
        .then( userRecord => {
            if (userRecord.password == passsword){}
        })
        
    return true ;
}

但不起作用。
当比较不起作用时,如何使用bcrypt进行比较

还基于散列密码的文档是:

* The user's hashed password (base64-encoded), only if Firebase Auth hashing
     * algorithm (SCRYPT) is used. If a different hashing algorithm had been used
     * when uploading this user, as is typical when migrating from another Auth
     * system, this will be an empty string. If no password is set, this is
     * null. This is only available when the user is obtained from
sczxawaw

sczxawaw1#

您没有粘贴文档中的完整信息:
用户的哈希密码(base64编码),仅当使用Firebase Auth哈希算法(SCRYPT)时。如果在上传此用户时使用了不同的哈希算法(通常在从其他Auth系统迁移时使用),则此密码将为空字符串。如果未设置密码,则此密码为null。仅当从**BaseAuth.listUsers()**获取用户时可用。
您使用的是admin.auth().getUserByEmail(username),因此没有接收到passwordHash属性。您需要使用文档中描述的List all users来检索哈希值。
即使这样,如果不设置自定义IAM角色,您也无法检索它:
由于密码哈希的敏感性,默认情况下Firebase Admin SDK服务帐户没有firebaseauth.configs.getHashConfig权限。您无法直接向用户/服务帐户添加权限,但可以通过创建自定义IAM角色间接执行此操作。

相关问题