首页 > 解决方案 > Firebase:检查提供的密码是否等于用户的密码

问题描述

我有以下功能作为检查是否可以生成令牌并随后登录用户。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 ;
}

我如何在password这里使用函数参数?该userRecord对象只有passwordHashand passwordSalt,但(也许是正确的)没有密码本身。那么,我该怎么做if ( userRecord.passowrd().equals(password) )呢?

标签: firebasefirebase-authentication

解决方案


验证用户电子邮件和密码不是 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 控制台获取


推荐阅读