0

我目前正在开发一个基于 SQL 和 VB.NET 设计的项目。思路如下:用户有不同的权限。administraotr 授予每个用户特定的权限。该想法如下所示:

在此处输入图像描述

例如,用户 A 可以获得以下权限:

他能够添加新标书、修改现有标书、添加新客户。

用户 B 具有以下权限:

他能够查看现有的标书、添加新员工……等等。

如何在 SQL 和 VB.NET 中实现它的想法是:

创建一个名为 Permission 的新表,其中包含以下字段:

UserID(用户 ID 的外键),每个权限将有一个字段,因此将有 12 个字段。

现在,在 VB.NET 中将有 12 个按钮(即添加新标书、删除标书......)。每个按钮将根据字段的值启用和禁用(如果字段 = 1,将启用按钮)。

这是一个例子:

在此处输入图像描述

在此处输入图像描述

在这种情况下,根据他的权限,对于这个用户,带有红线的按钮将被启用,其余的将被禁用。

显然,这种方式是愚蠢的,实施起来并不专业。

我需要你关于如何增强它的建议。

谢谢

4

1 回答 1

0

理想情况下,您希望使用外部授权框架,例如 Microsoft 的基于声明的授权,或者更好的是 XACML - 可扩展访问控制标记语言。

当您使用外部授权时,您需要在代码中编写的所有内容(如果有的话)是:

“我可以启用按钮 foo 吗?” . 这是您发送给外部授权引擎的问题。如果您使用“在 XACML 上运行”的引擎,那么您将获得基于策略、基于属性的访问控制,您可以在其中轻松定义:

  • 分配给客户的用户可以为该客户添加投标

查看开源解决方案或供应商解决方案,例如我工作的供应商Axiomatics 。还可以查看 XACML 上的可用资源,例如http://en.wikipedia.org/wiki/XACML或 YouTube 上的 XACML 视频。

于 2013-05-10T10:38:22.757 回答