我们应该将 ACL 放在应用程序的什么位置?
我们有一个现有的 ASP.NET MVC 应用程序,其结构如下(已简化):
- 数据
- 存储库
- 业务逻辑
- 查看模型
- 控制者
- 浏览量
它目前使用角色提供者模型,但我们被要求提供行级权限和功能。根据我的阅读,这往往被称为 ACL - 访问控制列表,因为它脱离了角色提供者模型 - 用户可能对实体的每个实例具有不同的功能。
在我看来,要求分为两部分 - 用户能够根据授予的访问权限检索实体子集,然后是他们能够对访问的实体执行的功能。
数据访问可能需要尽可能靠近数据层进行 - 这样会更安全并且对性能的影响更小。我想我们此时不想检查用户的功能级别。我们应该在 BL 层还是在 Controller 操作中执行此操作,类似于我们目前使用角色装饰操作方法的方式。
是否有现成的框架或产品可以帮助解决这个问题?我们正在研究 Azman 和 SQLAzman - 对于 SQL Server/Entity Framework 堆栈还有其他的吗?
最佳答案
您可能想查看 Spring ACL。我没有使用过,但它看起来提供了您需要的审查级别。
http://static.springsource.org/spring-security/site/docs/3.0.x/reference/domain-acls.html
http://grzegorzborkowski.blogspot.com/2008/10/spring-security-acl-very-basic-tutorial.html
关于sql-server - ASP.NET MVC 中的 ACL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7414901/