我目前正在开发一个基于SQL和VB.NET设计的项目。这个想法如下:用户有不同的权限。 administraotr授予每个用户特定的权限。这个想法如下所示:
例如,用户A可以获得以下权限:
他能够添加新招标,修改现有招标,增加新客户。
用户B具有以下权限:
他能够查看现有投标,添加新员工......等等。
如何在SQL和VB.NET中实现它的想法是:
使用以下字段创建名为Permission的新表:
UserID(用户ID的外键),对于每个权限,将有一个字段,因此将有12个字段。
现在,在VB.NET中将有12个按钮(即添加新招标,删除招标,......)。每个按钮将根据字段的值启用和禁用(如果字段= 1,则按钮将被启用)。
以下是一个例子:
在这种情况下,对于此用户,将启用带有红线的按钮,并根据其权限禁用其余按钮。
很明显,这种方式是SILLY,并不是专业的实施。
我需要你的建议如何加强它。
由于
答案 0 :(得分:0)
理想情况下,您希望使用外部授权框架,例如微软基于声明的授权或更好的XACML - 可扩展访问控制标记语言。
当您使用外部授权时,您需要在代码中写入所有内容(如果有的话):
“我可以启用按钮foo吗?”。这是您发送给外部授权引擎的问题。如果您使用“在XACML上运行”的引擎,那么您将获得基于策略的基于属性的访问控制,您可以在其中轻松定义:
查看我所工作的供应商Axiomatics等开源解决方案或供应商解决方案。另请查看XACML上的可用资源,例如YouTube上的http://en.wikipedia.org/wiki/XACML或XACML视频。