当前位置:  开发笔记 > 编程语言 > 正文

具有实体框架的行级安全性

如何解决《具有实体框架的行级安全性》经验,为你挑选了1个好方法。

我一直在考虑如何使用实体框架实现行级安全性.我们的想法是拥有一个数据库不可知的方法,它将提供限制来自ObjectContext的行的方法.

我的一些初步想法涉及修改EDMGEN工具创建的部分类,并提供了一些有限的支持.用户仍然可以使用自己的eSQL语句和QueryObject来解决此问题.

我一直在寻找一种全面的解决方案,它将存在于数据库提供商之上,以便它仍然是不可知的.



1> Craig Stuntz..:

当然你可以做到.重要的是阻止直接访问对象上下文(阻止用户构建自己的ObjectQuery),而是为客户端提供一个更窄的网关,在其中访问和改变实体.我们使用Entity Repository模式执行此操作.您可以在此博客文章中找到实体框架的此模式的示例实现.同样,关键是阻止访问对象上下文.请注意,对象上下文类是部分的.因此,您应该能够防止"未经授权"实例化它,即在您的存储库程序集之外.

但是,需要考虑细微之处.如果通过存储库模式对某个实体类型实现行级视图安全性,则必须考虑客户端可以访问相同实体的其他方法.例如,通过导航关系.您可能需要将其中一些关系设为私有,您可以在模型中执行此操作.您还可以选择指定用于加载/保存实体的自定义查询或存储过程.存储过程往往是特定于DB服务器的,但SQL可以以通用方式编写.

虽然我不同意实体框架无法做到这一点,但我同意"在数据库服务器上做它"的评论,因为你应该深入实施防御.

推荐阅读
个性2402852463
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有