在Firebase auth中,';最近';是指多久以前?
我想执行敏感操作线路更新电子邮件、密码等。我知道用户必须“最近”通过身份验证才能执行此类操作。在允许执行此类操作之前,我想确定用户最近是否经过身份验证,而不是从生成的错误消息中检测用户身份验证状态。(这是为了提供更好的用户体验) 我一直在搜索一种方法,例如在Firebase auth中,';最近';是指多久以前?,firebase,firebase-authentication,Firebase,Firebase Authentication,我想执行敏感操作线路更新电子邮件、密码等。我知道用户必须“最近”通过身份验证才能执行此类操作。在允许执行此类操作之前,我想确定用户最近是否经过身份验证,而不是从生成的错误消息中检测用户身份验证状态。(这是为了提供更好的用户体验) 我一直在搜索一种方法,例如isRecentlyAuthenticated(),但我找不到。但是我在user元数据中找到了lastsignentime。只有当我知道Firebase中“最近”认证的确切含义时,我才能将lastmignentitime与当前时间进行比较 请澄
isRecentlyAuthenticated()
,但我找不到。但是我在user
元数据中找到了lastsignentime
。只有当我知道Firebase中“最近”认证的确切含义时,我才能将lastmignentitime
与当前时间进行比较
请澄清:
(1) 是否有方法isRecentlyAuthenticated()
可供我们开箱即用
(2) 如果不是,“最近”是指多久前(1分钟、5分钟、1小时或其他时间) 包括对“最近登录”的引用,例如:
某些安全敏感操作(如删除帐户、设置主电子邮件地址和更改密码)要求用户最近登录
Firebase在执行安全敏感操作时使用
Firebase ID代币寿命短,持续一小时;刷新令牌可用于检索新的ID令牌
如前所述,在尝试这些操作时,您应该处理错误,而不是检查ID令牌是否过期
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.
}
});
Firebase身份验证要求用户最近在您尝试执行某些敏感操作时提供其凭据。未指定此近期要求的时间段,它由Firebase认证服务强制执行,可以更改而不另行通知
在代码中处理此问题的方法是在尝试操作时捕获错误,然后请求用户再次登录