【问题标题】:How to persist data in a command-line application?如何在命令行应用程序中持久化数据?
【发布时间】:2021-07-19 15:07:10
【问题描述】:

我想使用 Go 或 Node.js 构建一个命令行应用程序。我想让它成为多用户,所以需要登录功能。我可以实现登录功能,但我不明白应该在哪里存储可以在运行时随时获取的用户数据。 需要用户数据来检查用户是否登录,如果他登录的是哪个用户。

需要有关存储用户数据以检查登录状态的方法的帮助

编辑: 我曾想过这一点-如果存在配置文件,则表示用户已登录,否则不会。然后我意识到,如果有人篡改文件,整个登录点功能就会失效。我猜肯定有更好的方法来做到这一点,我想通过在这里询问来了解

【问题讨论】:

  • 我认为问题没有传达我想问的内容。我正在编辑问题
  • 有很多方法可以持久化数据。常见选项包括:使用现成的数据库、将数据存储在文件中或使用远程服务器。
  • 可以设置环境变量。这确保它只在当前的 shell 会话中持续存在
  • 您为什么担心最终用户会手动篡改磁盘上的配置文件?如果您将校验和与数据一起存储,您可以稍微确信它没有被篡改。为了提高信心,您可能需要引入一些远程权限。
  • 为了获得灵感,您可以看看 Google Cloud SDK(gcloud 命令)是如何做到的。默认情况下,它将其状态存储在$HOME/.config/gcloud 目录下。它似乎包含任意格式的文件、YAML 以及一些 sqlite 数据库。 (很明显,这个程序实现它的事实并不意味着这是一个“好”的策略。一如既往:“它取决于”)。

标签: node.js go authentication terminal command-line-interface


【解决方案1】:

许多 cli 实用程序选择将其配置作为纯文本文件存储在用户的主目录中。
您可以使用任何可用的配置格式,例如 JSON、TOML 等。

尽管值得一提的是,这不是一种安全的数据存储方式,而且如果用户不能以任何方式查看其他信息,这不是首选方式。

【讨论】:

  • 我已经想到了这一点。如果存在配置文件,则用户已登录,否则不登录。然后我意识到,如果有人篡改文件,整个登录点功能就会失效。我猜一定有更好的方法来做到这一点,我想通过在这里询问来了解
猜你喜欢
  • 1970-01-01
  • 2019-02-03
  • 2013-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多