我正在使用 Firebase 构建 Node.js 命令行界面 (CLI) 用于与后端进行身份验证。我想避免让用户每次运行命令时都输入密码。相反,我想实现一个“登录”流程,将凭证保留到文件系统,该凭证可用于后续的无密码身份验证,直到用户“注销”。
基本上我正在寻找的是 firebase
JavaScript SDK's “身份验证状态持久性”功能。不幸的是,Node.js 不支持该功能;使用 'local'
或 'session'
调用 setPersistence
,因为该模式会引发错误“当前环境不支持指定的持久性类型。”
“自己”实现该功能的最简单方法是什么?
我研究了 SDK 如何在浏览器中保留用户,基本上它会将用户对象字符串化并将其存储在本地存储中。我可以在 Node.js 中轻松地自行对用户对象进行字符串化(该实例有一个 toJSON 方法),但我不知道如何稍后将字符串反序列化为 firebase.User 的实例。我明白了this function in the source code看起来它可以解决问题。但据我所知,这并没有在 SDK 上公开。
最佳答案
您可以从序列化的用户对象实例化 firebase.User
类:
保存用户
const userJson = JSON.stringify(currentUser.toJSON())
// Write userJson to disk
加载用户
// Read userJson from disk
const userData = JSON.parse(userJson)
const user = new firebase.User(userData, userData.stsTokenManager, userData)
firebase.auth().updateCurrentUser(user)
来源:https://github.com/firebase/firebase-js-sdk/issues/1874#issuecomment-549085119
关于node.js - 为 Node.js 客户端应用程序保留 Firebase 用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55716608/