【问题标题】:Where to store the user Id, while using a network database使用网络数据库时存储用户 ID 的位置
【发布时间】:2011-08-22 21:47:40
【问题描述】:

我们有一个使用网络数据库的 C#.Net 应用程序。我的意思是说应用程序的许多实例将从不同的机器访问同一个数据库。因此,如果我必须在重新登录时存储用户 ID 以显示用户,我在哪里可以存储它?

我的选择是:
- 将其存储在应用程序目录的本地文件中。 (但问题是应用程序是使用 Click Once 安装的。当应用程序更新时,应用程序目录正在更改。可能我在这里遗漏了一些东西。)
- 存储在注册表中。
还有其他的吗?

有人可以建议做什么吗?如果我错了,请纠正我。

【问题讨论】:

  • 重新登录是什么意思?如果这只是一个 Web 服务器场,为什么不使用 Sql 模式下的 Session?
  • @Tejs 如果用户已经登录过一次,我想在登录表单的用户 ID 文本字段中自动填写用户 ID。在询问数据库之前,我想知道 userId。
  • @Prakash,请注意不要存储任何纯文本密码。
  • @Branko 是的,当然。我只用来存储 userId。

标签: c# database registry


【解决方案1】:

这类东西有内置位置,请参阅Environment - 特别是:

  • ApplicationData(用户特定漫游)
  • LocalApplicationData(用户特定非漫游)
  • CommonApplicationData(非特定用户)

【讨论】:

  • 谢谢。更新应用程序时修改应用程序文件夹的情况如何?(如问题中所述)。我也想问一下为什么要修改应用文件夹。
  • 这些位置在应用程序文件夹之外 - 因此应用程序文件夹内容的更新(如新的 EXE/DLL 等)不会改变您在这些位置放置的任何内容...
  • 我们通过点击安装的应用程序安装在位置“c:\Users\Prakash\AppData\Local\Apps\2.0\\\ " 并且正在修改此应用安装文件夹。这条路径是否在 LocalApplicationPath 之下?
  • 我不使用 ClickOnce,所以我不确定 - 我建议您通过检查上述位置在您的场景中返回的值来尝试它
【解决方案2】:

通常,您希望存储任何需要在会话之间持续存在的数据,并且在注册表或用户 AppData 文件夹中是用户特定的。通常对于小事情(即 id、基本设置等),注册表是最好的地方。只需确保将其粘贴在 HKCU\Software\Your company name\your program name 下即可。虽然如果数据是敏感的,您应该小心放置它,并且应该对其进行加密以保护它免受基本的窥探。如果它是不敏感的数据,那么注册表是放置它的好地方。

这当然假设安装和配置不需要是 xcopy 可移植的(即用户可以将安装文件夹复制到新的位置/计算机并让一切正常工作)。如果是这种情况,那么您需要将其存储在安装目录下。

【讨论】:

    【解决方案3】:

    如果您需要将 UserID 存储在本地,请将其保存在某种配置文件中,可能在“LastLogin”条目下。查看this question,特别是this answer,了解更多信息。

    【讨论】:

    • 所以你要求我在 AppData 目录(恒定路径)中创建另一个文件来存储“LastLogin”,因为当应用程序更新时,应用程序文件夹正在被修改。
    • 是的,这就是我的建议
    【解决方案4】:

    考虑使用Isolated Storage

    【讨论】:

      猜你喜欢
      • 2015-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多