如何为 Microsoft Access 2010 实施安全帐户以提供不同的权限

Posted

技术标签:

【中文标题】如何为 Microsoft Access 2010 实施安全帐户以提供不同的权限【英文标题】:How do I implement security accounts for Microsoft Access 2010 to provide different permissions 【发布时间】:2014-08-12 13:25:43 【问题描述】:

如何在 Microsoft Access 2010 的员工数据库中实现安全帐户,允许不同的用户使用不同的权限集登录。例如:-

我有一个数据库,其中包含经理、主管、文员或助理,并且只有 1 位全权管理员。

我已经设置了一个表:tblAccount, tblEmployee

**EmployeeIDP**
Name
Surname
StartedOn
FinishedOn
EmployeedType - Look up:- Admin/Manager/Supervisor/Clerk/Temporary

**AccountIDP**
Username
Password
**EmployeeIDF**
LastLogin
Permissions  - look up:- Full Access/Manage accounts/Read accounts only/No access

如果不向您提供数据库的完整规范,我如何防止某些用户访问帐户表或表单?

我已经实现了一个登录表单,并且每个用户都使用 VBA 登录,但这比尝试实现对表/字段等的权限更容易......

我想防止文员看到其他帐户,并防止主管添加/删除,经理可以添加新用户并执行除删除表或更改数据库结构之外的任何操作。

显然管理员可以做任何事情。

这甚至可能没有高级 VBA。

【问题讨论】:

可能是错误的,但您在 Access 中最多可以做的是根据谁使用查询/过滤器登录表单来控制可见的记录。您不能阻止用户直接查看/编辑表格。 看起来是时候迁移到后端的 SQL Server Express 了。这将是相当多的工作,但比尝试使用 MDB 更容易。 MDB 提供更高级的安全性。 @Fionnuala 我愿意,但您可以免费使用商业版 Server Express 还是需要许可费?我已经探索过这个选项,但坦率地说,我深入了解模型规范微软使用。我只是想让事情变得简单。访问接口是必须的。 显然你可以***.com/questions/2011716/… 【参考方案1】:

取决于您授予用户的访问权限。您说您已经有一个跟踪访问的登录表单。 您的所有表单是否都通过启动仪表板页面进行控制? 用户是否仅根据登录情况查看仪表板上的授权按钮/链接? 您可以隐藏所有对象(查询、表格、报表),仅通过仪表板授予访问权限,创建一个 .mde 或 accde 前端,将加密前端分发给用户。然后,您可以通过表单控制谁可以打开哪些数据集。这不会阻止坚定的程序员,但对于您的普通用户来说,它会随着您获得更强大的系统而工作。

【讨论】:

我是 Access 的粉丝,但我仍然会犹豫选择这条路线,除非初级用户可以查找高级用户的数据并不重要。 它实际上工作得很好,但它需要更多的 vba 登录管理和数据库结构的设置工作。用户、用户组和会话变量。我在这里设置系统时得到了很多帮助link 问题在于它很容易解决,尤其是在较新版本的 MS Access 中。 嗯,这是可能的。正如我所说,这将是一个权宜之计,直到 user2054388 进入 SQL Server。即使使用 SQL Server,他仍然需要通过 MS Access 管理对各种表的访问...... 有了 SQL Server 上合适的角色主体和权限,它变得容易多了。不要误会我的意思,如果安全不是主要问题,Access 就是我的答案。【参考方案2】:

我有一个在用户登录后打开的隐藏表单。表单具有可以被任何进程引用的字段。

DoCmd.OpenForm "frm_global_variables", acNormal, "", "", , acHidden

【讨论】:

【参考方案3】:

我过去回答过这个问题how to implement user level security in MS Access 2007 Microsoft 曾经有过工作组安全功能,但现在已不再存在,已停止使用。但现在我们将为角色和安全功能构建逻辑和编码。

我创建了一个特权表以及登录表。数据库中的每个屏幕都将对每个用户具有只读或读写权限。我将所有屏幕名称插入特权表。另一个表 UserPrivilege 将拥有用户及其权限。为用户分配权限只能由管理员用户完成。

每个表单开始时的功能检查是否允许指定用户查看或编辑表单。如果他/她被赋予只读权限,我们将锁定表单上所有通过控件循环的控件。否则,无事可做。或者在设计它们时将所有控件保持只读,并通过代码解锁它们以获得写入权限。

向最终用户交付版本时,数据库窗口将保持隐藏状态。这可以防止对数据库中的表进行常规、简单的查看,在数据库窗口中打开表单、报告对象。在制作 mde/accde 之后,可以再做一些调整,这样用户就不容易直接查看表格。绕过启动、特殊键等。

【讨论】:

以上是关于如何为 Microsoft Access 2010 实施安全帐户以提供不同的权限的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Microsoft Access 数据库中创建查询对象? [复制]

我的连接 C# 有问题 - Microsoft Access 2010

Microsoft Access 2010 查询不产生任何结果

Microsoft Access 2010 - 外键作为下拉菜单

Microsoft Access 2010:查询和表单

在 Microsoft Access 2010 数据宏中使用变量数据