目前我使用两个数据库来管理用户,我尝试做的是在用户未被记录时更新firebaseAuth密码(通过发送passwordResetEmail)。
然后,当用户更改密码(在firebase中)并再次登录时,如果FirebaseLogin成功,我将获取密码,并在其他数据库中重置密码。
所以,我需要知道用户何时更改了firebase中的密码
来自firebaseAuth的方法向用户发送密码重置电子邮件,我需要知道用户何时更改了密码,我找到了firebaseAuth的两种方法:
confirmPasswordReset();
checkActionCode();
我认为使用这两种方法可以识别密码重置操作,但我不知道如何使用这些方法。
另一种方法是直接在Firebase数据库中保存密码,使用addValueEventListener或类似的东西,但我宁愿避免在Firebase数据库中保存密码。
感谢您的回答。
答案 0 :(得分:1)
能够使用此方法:
confirmPasswordReset();
您需要操作码和用户输入的新密码。
在给定确认码和新密码的情况下完成密码重置过程。
此处有更多信息:https://firebase.google.com/docs/reference/js/firebase.auth.Auth#confirmPasswordReset
首先,您需要获取操作码:
var actionCode = getParameterByName('oobCode');
然后您需要验证操作代码并从用户处获取新密码并将其传递给confirmPasswordReset:
auth.verifyPasswordResetCode(actionCode).then(function(email) {
var accountEmail = email;
auth.confirmPassordReset(actionCode, newPassword).then(function(resp) {
// Password reset has been confirmed and new password updated.
}).catch(function(error) {
//error
});
}).catch(function(error) {
//error
});
更多信息:
答案 1 :(得分:1)
执行此操作的最佳方法可能是创建自定义重置密码电子邮件处理程序。您可以自行处理重置(并立即在两个位置重置),而不是在应用中执行工作以验证密码是否已重置。您可以阅读有关实施此in the auth guide的信息。
您提到的confirmPasswordReset()
和checkActionCode()
方法都应该在自定义电子邮件处理程序中使用。
您绝对不希望在任何地方以纯文本格式保存用户的密码。如果必须将它们保存在第二个位置,请始终确保使用唯一的盐加密它们。如果您想验证您的Firebase用户'第二个系统上的身份,您可以使用的其他方法是:re-use their Firebase auth tokens,使用REST api to verify their password或导出您的用户using the cli并使用Firebase's Scrypt library
自行验证