我有一个个人资料选项卡,用户可以在其中按编辑并编辑他们的个人资料。我只想在必要时才需要他们的密码。所以想知道用户登录的时间是多少毫秒才使其不是最近登录,其中Firebase在编辑用户帐户时会抛出错误
"auth/requires-recent-login"
? new Date(Date.parse(firebase.auth().currentUser.metadata.lastSignInTime)).getTime()
会给我上次登录的近似值(2000 毫秒内的毫秒数)。我只是想知道我应该在什么时候要求用户重新进行身份验证?
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.
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"}