首页 > 解决方案 > 如何向 Delphi 应用程序添加多用户功能?

问题描述

我目前正在开发一个需要多用户功能的桌面(数据库:访问)Delphi应用程序(每个用户都有他的权限,交易历史)。

我怎样才能做到这一点 ?

我找到了这篇文章,他们使用 MySQL 并且不熟悉它,在 Access 中解释相同的方法将不胜感激。

标签: databasedelphims-accessmulti-user

解决方案


您的问题有点宽泛,但这里有一些建议可以实现您的期望:

即使数据库具有用户身份验证,也不要依赖它:

  • 身份验证是高度特定于数据库的,因此您的代码不会轻易迁移到另一种数据库;
  • 出于安全原因,泄露数据库凭据总是一个坏主意:任何能够连接到数据库的人都可以使用原始 SQL 对其进行修改......

因此,在一个完美的世界中,我会使用 n 层架构,并将身份验证保留在服务器端。但它不适用于 RAD 应用程序。

一种典型的方法是定义一些User表,带有一个 ID,并使用例如散列密码进行身份验证。然后是其他一些UserRight表,其特征名称为字符串键,我将在我的 VCL/UI 代码中对其进行测试:例如“ModifyThisKindOfData”、“ExportThisKindOfContent”......例如,请参阅如何区分Authorization 和 Authentication

关于安全性,如果您使用 Access,则需要通过使用正确的密码散列(例如使用带有密钥和存储盐的 PBKDF2/SHA-256)以及通过对表行UserUserRight表行进行签名来保护授权和身份验证,例如使用HMAC-SHA-256。然后在软件中进行验证,以检测 DB 是否已回火。它将避免最明显的安全漏洞。但是切换到适当的 n 层设计,或者客户端-服务器数据库会更好。


推荐阅读