我有一个简单的.NET 3.5应用程序,用于使用ODBCDataSet更改某些数据库字段。现在,Feature Creep正在询问我是否可以根据用户的数据库权限隐藏或显示标签和其他控件。
理想情况下,我想仅使用Windows用户组在SQL Server上控制权限,而应用程序将没有任何内置身份验证或权限系统 - 它只是使用登录用户的Windows帐户数据库连接。因此,它必须“测试”权限以确定是否显示用户的选项卡。例如,如果他们对某个表具有“写入”权限,则可以看到用于编辑它的选项卡;如果没有,标签永远不会为它们加载。
这真的是我需要帮助的部分:如何列出或测试用户对ODBCDataSet的权限?
答案 0 :(得分:2)
您是否反对让您的应用了解Windows用户组?通常,我们一直使用AD组来保证数据库和.NET代码中的安全性。显示/隐藏功能正是重点。此外,即使由于某种原因他们设法显示该功能,数据库还会检查其角色并阻止操作。
就个人而言,我认为检查.NET代码中的角色成员资格是最简单的解决方案(您可以使用IsInRole方法执行此操作)。
但是,如果有理由说你不能或不想让应用知道组名,如果他们改变了,我明白了。可能没有ODBC方法检查,因为任何方法很可能是专有的和/或数据库相关的(SQL Server等)...除此之外,您必须编写代码来尝试插入/更新命令在一个已知的测试记录上,看看它是否以SqlException返回,我猜。
答案 1 :(得分:1)
您可以随时尝试/接听对数据库的呼叫。这将向DB验证用户身份,然后创建一个存储过程以返回所有可访问的表。