设计基于权限的安全模型

时间:2011-07-11 12:45:10

标签: vb.net design-patterns permissions roles

我在vb.net winforms app上工作,我们目前正在使用简单的角色来保证安全性。我们根据当前用户是否具有所需角色来启用/禁用特定控件。我们已经到了不再那么精细的程度。

我们的应用程序基于我们称之为站点的不同物理位置。用户可能有权在一个站点上执行某些操作(例如,编辑站点的配置),但不能在另一个站点上执行操作。因此,我们现在需要根据当前用户和当前站点查找权限。此外,某个用户的权限可能对他们自己非常具体,即。没有其他用户的权限与其他用户的权限完全相同。因此,我们需要一种基于权限而非基于角色的安全模型。

设计可满足这些要求的新权限模型的最佳方法是什么?我想确保在代码中实现检查很容易(我不希望在我们的SetUIPermissions方法中添加数百万个if语句)并且我们不希望每个用户更新(400+和计数)我们添加新权限的时间。由于这最后一个要求,我认为我们需要保持角色的想法,但可能为特定用户添加/删除特定权限的异常。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

您在角色和权限方面走在正确的轨道上。让角色引用一组“默认”权限是一种相对常见的解决方案;通过让用户拥有角色和一组权限,您允许该角色被该用户专门授予/撤消的权限集覆盖。这提供了合理的灵活性和粒度,并支持您添加新权限(在角色中)的情况,而无需触及每个用户。