firebase - 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
对象只有passwordHash
and passwordSalt
,但(也许是正确的)没有密码本身。那么,我该怎么做if ( userRecord.passowrd().equals(password) )
呢?
解决方案
验证用户电子邮件和密码不是 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 控制台获取
推荐阅读
- reactjs - 通过用户搜索处理从列表中排除项目的最佳方法是什么?
- angular - Angular 在返回时重新加载整个应用程序 (location.back)
- python - HDf5 数据维度从 (512,1080) 更改为 (512,1080,1)
- ios - 根据按下的按钮,通过 Segue 传递变量返回的对象
- r - ggraph 中的长格式和宽格式等效项
- node.js - NodeJS请求如何保存Body
- php - 使用 PHP 从 MySQL 表中检索特定数据
- postgresql - 为 Doctrine 2.5 和 PostgreSQL 10 配置默认模式
- java - 休眠列唯一属性不变
- php - 如何将 Symfony 表单类型属性与 twig 中 form_row 的属性合并