0

我正在用 C# 编写一个使用数据库 SQL Server 2005 的应用程序。它使用 Windows 身份验证。

问题是用户应该根据存储在数据库中的信息来获得权限。

我在我的数据库中存储有关不同项目的信息。每个项目都有一个领导,每个项目属于某个领域,每个领域都有管理员。因此,启动某个项目的人应该只能修改该项目。管理员也可以启动项目,但仍然不能修改其他项目。这适用于不同的选择、更新和插入情况。

我不喜欢在存储过程调用中检查权限的想法,因为如果某些类型的工人的权利发生了变化,所有这些都应该被重写。

在我的情况下,控制访问的最佳方法是什么?

4

1 回答 1

0

您无法绕过权限基于数据的事实,因此您需要在操作之前检查数据。也就是说,在某处的代码中。

  • 在“创建”过程/视图中,您需要检查当前用户是否为管理员
  • 更新过程/视图中,您需要检查用户是否匹配列

这是简化的,但这是您必须要做的。

对于存储过程,您可以调用另一个存储过程来检查权限,以便将所有检查集中在几个地方,以便于维护。

于 2011-08-03T08:53:27.403 回答