【发布时间】:2011-11-16 21:53:23
【问题描述】:
我们应该将 ACL 放在应用程序的什么位置?
我们有一个现有的 ASP.NET MVC 应用程序,其结构如下(简化):
- 数据
- 存储库
- 业务逻辑
- 查看模型
- 控制器
- 观看次数
它目前使用角色提供者模型,但我们被要求提供行级权限和功能。根据我所做的阅读,这往往被称为 ACL - 访问控制列表,因为它远离角色提供者模型 - 用户可能对实体的每个实例具有不同的功能。
在我看来,要求有两个部分 - 用户根据授予的访问权限检索实体子集的能力,然后是他们能够对访问的实体执行的功能。
数据访问可能需要尽可能靠近数据层进行 - 这样会更安全并且对性能的影响更少。我想我们现在不想检查用户的功能级别。我们应该在 BL 层还是在控制器动作中这样做,类似于我们目前用角色装饰动作方法的方式。
是否有现有的框架或产品可以帮助解决这个问题?我们正在研究 Azman 和 SQLAzman - 还有其他的 SQL Server / Entity Framework 堆栈吗?
【问题讨论】:
-
您使用的是什么数据库?是否提供行级权限?
标签: sql-server asp.net-mvc acl