我正在开发一个通用的数据库查询工具,一个.Net 3.5 Windows窗体应用程序。为了使表示层独立于数据库层。我使用的是ORM框架,来自DevExpress的XPO。
但是,我没有内置的访问控制功能。我浏览了互联网,我发现在WCF数据服务中,有一个有趣的概念,拦截器,它遵循AOP(面向方面编程)。
我想知道谁有这样的经验来在ORM中构建访问控制。我的基本要求是:
我愿意买一个现成的解决方案。根据AOP的思想,访问控制功能可以轻松地与现有功能集成,并且几乎不会故意与之前的开发人员集成;)
欢迎任何建议。
答案 0 :(得分:1)
我不确定这个答案会对你的情况有所帮助,但它对你来说很有意思。
X-tensive公司(DataObjects.Net ORM的开发人员)计划在几个月内为DataObjects.Net实现类似的功能。 X-tensive的计划是提供全功能的即用型安全扩展,可能基于属性和方面。当然,它将与此ORM紧密相关,但您可以从其描述中获得一些想法。请参阅功能请求及其讨论here。
你也可以看看Rhino Security,我不知道这个项目的当前状态,但它接缝这样的解决方案对你的情况很有用。
答案 1 :(得分:0)
为什么不在ORM和表示层之间构建一个层?通过这种分离,您可以轻松切换数据源(将来您可能将数据放在另一台服务器上并通过Web服务访问它)。我确信这个图层有一个奇特的名称,但我将所有界面都称为管理员。
演示文稿 - >经理 - >数据访问层 - > DB
示例:
var user = Program.Components.Get<IUserManager>().GetById(1);
user.FirstName = "Jonas";
Program.Components.Get<IUserManager>().Save(user);
在管理人员中,您可以使用 IIdentity 和 IPrincipal (内置在.Net中的访问控制界面)来控制访问。 http://msdn.microsoft.com/en-us/library/ms172765(VS.80).aspx