python 中无法使用 firebase admin sdk 比较密码
unable to compare password using firebase admin sdk in python
我在 python
中使用 firebase 的 admin-SDK
我使用以下代码创建了一个新用户
user = auth.create_user(
email=email,
email_verified=False,
password=password,
display_name=name,
disabled=False)
现在我创建了一个函数,它从用户那里获取 name 、_email id _ 和 password 并使用它的电子邮件 id 获取用户然后检查输入的详细信息是否正确。
def check_user(self, name, email, password): # fixme compare password
user = auth.get_user_by_email(email)
if user.display_name == name and user.email == email:# add password comparision
print('successful login')
return True
else:
print('username or password incorrect')
return False
我想比较输入的密码和存储的密码,但我无法比较,因为我无法访问密码,我只能使用 user.passwordHash 访问 passwordHash,使用 user.passwordSalt 访问 passwordSalt。
有什么办法可以找到密码的 passwordHash 或 passwordSalt 以便我比较哈希。
使用 Firebase 身份验证时的通常流程是您的用户使用直接使用 Firebase SDK 的客户端代码登录。所以在那种情况下,
Firebase 本身将执行检查密码是否正确。
您可以自己执行检查,但是您必须在代码中对用户的明文密码进行哈希处理,然后比较存储的哈希值和计算的哈希值,本质上是重复Firebase 已经做了什么。 Firebase 使用 modified version of scrypt 来加密密码。
有一个名为 pyrebase 的库。您可以使用它来模拟服务器中的客户端。启动 pyrebase 对象后,只需使用 sign_in_with_email_and_password(email, password)
。
GitHub url: https://github.com/thisbejim/Pyrebase
python 的 Firebase Admin SDK 不提供比较密码的方法。但是,有一个解决方案可以确认用户的真实性。
这可能会有帮助
我在 python
中使用 firebase 的 admin-SDK我使用以下代码创建了一个新用户
user = auth.create_user(
email=email,
email_verified=False,
password=password,
display_name=name,
disabled=False)
现在我创建了一个函数,它从用户那里获取 name 、_email id _ 和 password 并使用它的电子邮件 id 获取用户然后检查输入的详细信息是否正确。
def check_user(self, name, email, password): # fixme compare password
user = auth.get_user_by_email(email)
if user.display_name == name and user.email == email:# add password comparision
print('successful login')
return True
else:
print('username or password incorrect')
return False
我想比较输入的密码和存储的密码,但我无法比较,因为我无法访问密码,我只能使用 user.passwordHash 访问 passwordHash,使用 user.passwordSalt 访问 passwordSalt。
有什么办法可以找到密码的 passwordHash 或 passwordSalt 以便我比较哈希。
使用 Firebase 身份验证时的通常流程是您的用户使用直接使用 Firebase SDK 的客户端代码登录。所以在那种情况下, Firebase 本身将执行检查密码是否正确。
您可以自己执行检查,但是您必须在代码中对用户的明文密码进行哈希处理,然后比较存储的哈希值和计算的哈希值,本质上是重复Firebase 已经做了什么。 Firebase 使用 modified version of scrypt 来加密密码。
有一个名为 pyrebase 的库。您可以使用它来模拟服务器中的客户端。启动 pyrebase 对象后,只需使用 sign_in_with_email_and_password(email, password)
。
GitHub url: https://github.com/thisbejim/Pyrebase
python 的 Firebase Admin SDK 不提供比较密码的方法。但是,有一个解决方案可以确认用户的真实性。
这可能会有帮助