微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我一直在试图考虑如何使用实体框架来实现行级安全性.这个想法是使数据库不可知的意思是提供限制来自ObjectContext的行的方法.

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

我一直在寻找一个全面的解决方案,它将存在于数据库提供者之上,以使它保持不可知性.

解决方法

当然可以做到重要的是要阻止直接访问对象上下文(阻止用户构建自己的ObjectQuery),而是为客户端提供一个较窄的网关来访问和变更实体.我们可以使用 Entity Repository pattern.你可以找到一个 example implementation of this pattern for the entity framework in this blog post.再次,关键是阻止对对象上下文的访问.请注意,对象上下文类是部分的.因此,您应该能够防止“未经授权”的实例化方式,即在存储库组合之外.

但是,有些微妙的考虑.如果您通过存储库模式在某个实体类型上实现行级视图安全性,则必须考虑客户端可以访问相同实体的其他方式.例如,通过导航关系.您可能需要将某些关系私有化,您可以在模型中进行.您还可以选择specifying a custom query或加载/保存实体的存储过程.存储过程往往是DB服务器特定的,但sql可以以通用方式编写.

虽然我不同意这不能与实体框架完成,但我同意“实施DB服务器”的意见,因为您应该实现defense in depth.

原文地址:https://www.jb51.cc/csharp/94382.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐