我具有以下功能,以检查是否可以在随后登录用户时生成令牌。仅在拥有给定电子邮件的用户具有给定密码的情况下,才应该返回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
对象仅具有passwordHash
和passwordSalt
,但(也许正确)没有密码本身。然后,我该怎么做类似if ( userRecord.passowrd().equals(password) )
的事情?
答案 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控制台获取