2009-08-21 21 views
3

我有一个简单的.NET 3.5应用程序,用于使用ODBCDataSet更改某些数据库字段。现在Feature Creep问我是否可以根据用户的数据库权限隐藏或显示标签和其他控件。如何测试用户对数据库的权限

理想情况下,我想仅在使用Windows用户组的SQL Server上控制权限,并且该应用程序不具有任何内置身份验证或权限系统 - 它只是使用登录用户的Windows帐户数据库连接。因此,它必须“测试”权限以确定是否显示用户的选项卡。例如,如果他们对某个表具有“写入”权限,则可以看到编辑它的选项卡;如果没有,选项卡不会为它们加载。

这真的是我需要帮助的部分:如何列出或测试用户对ODBCDataSet的权限?

+2

Feature Creep ...听起来像是一个Dilbert角色。您可以将用户的权限存储在单独的表中吗? – Beth 2009-08-21 18:45:35

+0

其中一个更复杂的情况可能是如果用户具有“读取/选择”权限而不是“写入/更新”,并且我希望避免必须执行实际更新,特别是如果某些表不能有无关记录。 但是添加存储过程或单独的表将是无害的。 Hrm ...我喜欢它。 哦,我确实认为Feature Creep是Dilbert中的一个客人角色。我一直喜欢将其人格化的想法。 :) – ewall 2009-08-21 20:49:36

回答

1

您可以随时尝试/赶上对数据库的调用。这将验证用户到数据库,然后创建一个存储过程来返回所有可访问的表。

+0

好奇你最终结束了。我没有花时间研究查询用户访问的实际情况,我只知道有变通方法(即测试更新/选择/等)。 – madcolor 2009-08-21 20:59:21

2

您是否反对让您的应用程序知道Windows用户组?一般来说,我们一直使用AD组来保证安全性,就像您在.NET代码中的数据库AND中一样。显示/隐藏功能就是要点。此外,即使由于某些原因他们设法显示该功能,数据库还会检查其角色并防止操作。我个人认为检查.NET代码中的角色成员资格是最简单的解决方案(您可以使用IsInRole方法执行此操作)。

但是,如果有理由不能或不想让应用程序知道组名,万一它们发生变化,我理解。可能没有ODBC方法检查,因为任何方法都可能是专有和/或数据库相关的(SQL Server等)......除此之外,您必须编写代码以尝试插入/更新命令在已知的测试记录上,看看它是否会返回一个SqlException,我猜。

相关问题