在Firebase身份验证中,“最近”身份验证意味着多久了?

时间:2019-08-16 07:17:00

标签: firebase firebase-authentication

我想执行敏感操作,包括行更新电子邮件,密码等。我了解必须对用户进行“最近”身份验证才能执行此类操作。我想确定用户最近是否经过身份验证,然后再允许执行此类操作,而不是从结果错误消息中检测用户身份验证状态。 (这是为了提供更好的用户体验)

我一直在寻找诸如isRecentlyAuthenticated()之类的方法,但找不到。但是我在lastSignInTime user内部发现了metadata。只有知道“最近”认证在Firebase中的确切含义时,我才能将lastSignInTime与当前时间进行比较。

请澄清:

(1)是一种isRecentlyAuthenticated()可用的方法,供我们直接使用

(2)如果不是“最近”,则表示多长时间(1分钟,5分钟,1小时或其他时间)?

2 个答案:

答案 0 :(得分:1)

Firebase documentation包含对“最近登录”的引用,例如:

  

某些对安全敏感的操作(例如删除帐户,设置主电子邮件地址和更改密码)要求用户 最近登录 。< / p>

Firebase在执行对安全敏感的操作时使用ID Tokens

  

Firebase ID令牌寿命很短,持续了一个小时;刷新令牌可用于检索新的ID令牌。

正如Frank van Puffelen所指出的那样,在尝试执行这些操作之一时,应该检查错误,而不是检查ID Token是否过期。

var user = firebase.auth().currentUser;

user.delete().then(function() {
  // User deleted.
}).catch(function(error) {
  if (error.code === 'auth/requires-recent-login') {
    // Require user to sign in again.
  }
});

答案 1 :(得分:1)

Firebase身份验证要求您在尝试执行某些敏感操作时最近提供了其凭据。未指定此新近度要求的时间段,它由Firebase身份验证服务强制执行,并且可以随时更改,恕不另行通知。

您应该在代码中处理此问题的方法是,在尝试操作时捕获错误,然后请求用户再次登录。