【问题标题】:In SQLite, Can we create one database for each user in an app? [closed]在 SQLite 中,我们可以为应用程序中的每个用户创建一个数据库吗? [关闭]
【发布时间】:2022-01-02 14:54:27
【问题描述】:

我有一个项目作为毕业论文。我必须编写一个密码管理器应用程序。在这个应用程序中,许多用户可以创建、登录他们的帐户并管理他们的数据,例如 facebook 帐户、gmail、tiktok ......并且需要使用 SQLite Cipher 来加密每个用户的数据(加密数据的密钥是从用户密码散列而来的) 那么,我该如何为每个用户创建每个数据库呢? 例子,

  • 用户A创建他的帐户:用户名A,密码a12345。 A登录后,A的数据库为A_db.db
  • 用户 B 创建他的帐户:用户名 B ,密码 b12345。 B登录后,b的数据库为B_db.db。

【问题讨论】:

    标签: java android sqlite password-manager sqlite-cipher


    【解决方案1】:

    是的,您可以(技术上)为每个用户创建一个单独的 SQLite 数据库。 SQLite 数据库只是一个文件。打开数据库时给出文件名。多个不同名称的文件很容易实现。

    但是可能你不需要。

    在 Android 上,假定该给定设备只有一个用户。 Android 平台 (AFAIK) 不支持多个用户/帐户。所以......假设这个 SQLite 数据库在 Android 用户的设备上,你的问题根本不会出现。

    如果数据库在服务器上……那么,为每个用户保存一个单独的数据库并不能实现太多。您可以将信息保存在一个数据库中:SQLite 或更强大/可扩展的数据库。

    对于密码管理器应用程序具有每个用户的 SQLite 数据库有意义的唯一情况是,如果应用程序设计为在支持多个用户帐户的操作系统上运行;例如Windows、Unix、Linux、Mac OS 等。然后您可以将数据库放在每个用户的主目录中......或类似的东西。

    【讨论】:

    • 感谢您的评论。我知道“在 Android 上,假定该给定设备只有一个用户”。但我的小项目就像一个演示应用程序,具有我列出的一些功能。我必须遵循的毕业论文的要求。因为用户的数据与使用单独的密钥加密有关,所以我需要为每个用户创建每个数据库。你介意为我创建一个演示代码吗?谢谢
    • 您肯定可以找到创建 SQLite 数据库的示例代码吗?如果您自己找到,我为您编写演示代码是浪费时间。实际上,您应该能够通过阅读文档获得的信息自行完成。
    【解决方案2】:

    您不需要每个用户都有一个数据库。每个用户都将在他们的平台上拥有自己的数据库副本(我猜您正计划从标签创建一个 Android 应用程序)。因此,您必须设计数据库,以便每个用户独立于其他用户使用自己的副本。

    【讨论】:

    • 是的。我计划创建一个具有一些要求的应用程序,正如我在我的主题中列出的那样。因为它需要使用从登录密码散列的自己的密钥来加密用户数据,所以我认为我需要为每个用户创建每个数据库。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-19
    • 2016-11-01
    • 2019-03-29
    • 2021-06-07
    • 2020-12-30
    • 1970-01-01
    相关资源
    最近更新 更多