Firebase Auth - 最近登录多长时间

问题描述 投票:0回答:2

我有一个个人资料选项卡,用户可以在其中按编辑并编辑他们的个人资料。我只想在必要时才需要他们的密码。所以想知道用户登录的时间是多少毫秒才使其不是最近登录,其中Firebase在编辑用户帐户时会抛出错误

"auth/requires-recent-login"
new Date(Date.parse(firebase.auth().currentUser.metadata.lastSignInTime)).getTime()
会给我上次登录的近似值(2000 毫秒内的毫秒数)。我只是想知道我应该在什么时候要求用户重新进行身份验证?

javascript firebase authentication web firebase-authentication
2个回答
8
投票

Firebase 身份验证登录是永久性的。用户身份验证没有特定的超时时间,因此您不应要求他们(仅)根据过期时间重新进行身份验证。

唯一应该要求用户重新进行身份验证的情况是,当您在代码中执行需要最近身份验证的操作并且该操作失败并显示

auth/requires-recent-login
错误代码时。

例如,这就是 FirebaseUI 在用户删除时检测错误的方式

 firebase.auth().currentUser.delete().catch(function(error) {
  if (error.code == 'auth/requires-recent-login') {
    // The user's credential is too old. She needs to sign in again.

0
投票

firebase.auth().currentUser.metadata

如果您在浏览器控制台中输入

firebase.auth()
并展开/查看结果对象,您将在
metadata
下找到一个
currentUser
属性,其中包含以下字段。请注意,我添加了破折号来隐藏输出中的数据。

  metadata:
    Ia {a: "15---------00", 
    b: "15--------00", 
    lastSignInTime: "Wed, 13 Jun 2018 10:01:46 GMT", 
    creationTime: "Thu, 19 Apr 2018 18:48:09 GMT"}
© www.soinside.com 2019 - 2024. All rights reserved.