我有一个需要对其权限系统进行大修的应用程序。关于详细应用权限的建议体系结构
此应用程序有2种类型需要确保“实体”的:
- 用户
- 公司
用户很简单,他们只是有他们访问区域中的角色应用程序,没有数据会改变。
公司可以是管理(目前只是拥有该产品的“主”公司),合作伙伴(产品的经销商)和标准(仅使用产品的人)3种类型之一。
该产品还具有“团体”公司的概念,因为经销商可以以不同名称销售产品,但需要能够一次查看所有数据。因此,每个公司总是属于一个集团,而每个集团又由一家公司所有。
当查询数据,我有几个要求:
- 如果属于经销商A公司的用户查询中的所有组的数据,所有的公司,经销商拥有需要显示
- 如果属于标准公司B的用户查询数据,他们应该只能看到他们的信息
- 如果属于管理公司C的用户查询数据,他们应该看到所有的东西
- 最后,显示的实际数据需要过滤按公司类型 - 行政性公司看多的经销商更多的数据,谁看到比标准的公司
现在更多的信息,目前的系统实际上承担了大部分的这一点,但它是一个很大的:
List<int> groups;
if(CompanyType == CompanyType.Reseller){
groups = [some list of groups]
}else{
....
}
这是相当丑陋容易出错。
我们使用SubSonic,WCF(整个系统设计有一个REST接口),PostSharp和C#,所以你知道可用的工具。
任何人都可以提出一个很好的方法来实现在这个级别的细节(行和列,本质上)在框架级别的权限,以确保限制设置适当和自动?
这是否引进什么样的性能开销的关系吗?如果我有一个包含100,000条记录的表格,我想在数据库级别进行筛选,如果可能的话...... – jvenema 2012-04-25 19:27:55
您是否有一种情况需要加载100,000条记录?例如,您可能会为您的产品按类别和其他标准过滤它们。 – schglurps 2012-04-26 08:17:22
很多时候它只是一个前20位的过滤器,所以我有一个查询限制了它,否则我必须查询top-X,并希望过滤器不会返回小于20 :) – jvenema 2012-04-26 13:11:13