我的公司相当广泛地使用 Access + MySQL 应用程序,如果我发布源代码,它可能会在 Daily WTF 上看到一些显着的流量。用户及其权限的管理正在失控,我似乎花费了越来越多的时间来调整这些或试图弄清楚为什么有人看不到他们应该看到的东西。
它最初设置为三个用户在一个仓库中使用。它现在被四个州的 20 多个用户使用,并且很快会添加更多功能,并且功能已经以大约 10 比 1 的比例添加到用户中......实际的核心应用程序还不错,但管理用户是一种痛苦。Access 为数据本身提供了一个很好的前端,它存储在我们总部的 MySQL 后端。用户在卫星分支机构拥有 Cisco VPN 盒子,这也很稳定。Scope 已经从一个简单的仓库运输记录发展成为一个成熟的 CRM/ERP ......好吧,我不认为你可以称之为解决方案。也许是乳液。如果我有预算,我会打电话给 SAP 并告诉他们去做。恐怕,在可预见的未来,这是不可能的。
按照 Google 的说明(并不总是最安全的做法),我使用 Access 中的“用户级安全向导”为各个用户分配用户名和密码,当我开始时总共有 4-5 个用户和 3 个活跃用户时,这很好. 但它现在相当笨拙。我最深切的愿望和愿望是,有某种方法可以根据 Active Directory 用户名和密码对用户进行身份验证并分配特权角色。有人告诉我这是不可能的。一些谷歌搜索没有发现任何值得注意的东西。
我推测应该可以使用 Active Directory 获得某种身份验证框架,因为 VBA 具有指向 Windows 中各种 API 的链接。但是……值得花时间和麻烦吗?有没有人让这个工作,或者我不仅会炸毁我的 WTF 值得应用程序,而且还会炸毁域?
我知道这是可能的,但似乎很少有 Access 开发人员这样做。如果其他人编写了代码,我会自己使用它,但不需要它来自己编写它。
关键概念是您可以使用 ADO 通过 LDAP 查询访问 AD 信息。没有办法对 Access 对象强制执行权限,但您当然可以根据 AD 成员资格控制应用程序流/呈现。请参阅此线程作为起点。此外,还有一篇关于此的 MS 知识库文章解释了 LDAP 方法。
顺便说一句,只要您不需要特定于 AD 的功能(例如组织单位),您就根本不需要使用 AD。您可以使用常规 API 调用来获取组成员信息。请参阅此 Stackoverflow 帖子以获取一些建议前进方向的代码(我无法验证该代码,因为它看起来相当椭圆,即不是 API 声明,但它提供了基本概念)。
在该级别无法直接与 AD 交互。您可以直接做的最好的事情是根据 AD 帐户分配文件权限。通过 VBA 实现它需要一些努力,但肯定不会超出理解范围。我会说你应该在处理之前对其进行非常可靠的投资回报率分析。