Firebase:检查提供的密码是否等于用户的密码

时间:2018-11-16 01:54:19

标签: firebase firebase-authentication

我具有以下功能,以检查是否可以在随后登录用户时生成令牌。仅在拥有给定电子邮件的用户具有给定密码的情况下,才应该返回true

login = function(username,password) {
    admin.auth().getUserByEmail(username)
        .then( userRecord => {
            console.log("Success in fetching user: "+userRecord.toJSON());
        })
        .catch( error => {
            console.log("Error fetching user: "+error);
            return false ;
        });
    return true ;
}

如何在此处使用函数参数passworduserRecord对象仅具有passwordHashpasswordSalt,但(也许正确)没有密码本身。然后,我该怎么做类似if ( userRecord.passowrd().equals(password) )的事情?

1 个答案:

答案 0 :(得分:0)

验证用户的电子邮件和密码不是Admin SDK的一部分。您将需要使用客户端SDK来执行此操作,并传递一个ID令牌,然后可以对其进行验证。

我发现有一种方法可以执行此操作,但是不确定它是否受支持,但是有一个剩余的API可以验证密码并返回一个idToken属性,您可以将该属性返回给客户端

curl -X POST \
  'https://www.googleapis.com/identitytoolkit/v3/relyingparty/verifyPassword?key=ENTER_THE_FIREBASE_API_KEY' \
  -H 'Content-Type: application/json' \
  -H 'cache-control: no-cache' \
  -d '{
    "email" : "demo@email.com",
    "password" : "demo123",
    "returnSecureToken" : true
}'

ENTER_THE_FIREBASE_API_KEY可以从Firebase控制台获取