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

c# – 具有实体框架的行级安全性,第1张

概述我一直在试图考虑如何使用实体框架来实现行级安全性.这个想法是使数据库不可知的意思是提供限制来自ObjectContext的行的方法. 我的一些初步想法涉及修改EDMGEN工具创建的部分类,并提供了一些有限的支持.用户仍然可以通过使用自己的eSQL语句和一个QueryObject来解决这个问题. 我一直在寻找一个全面的解决方案,它将存在于数据库提供者之上,以使它保持不可知性. 当然可以做到重要的是要 我一直在试图考虑如何使用实体框架来实现行级安全性.这个想法是使数据库不可知的意思是提供限制来自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.

总结

以上是内存溢出为你收集整理的c# – 具有实体框架的行级安全性全部内容,希望文章能够帮你解决c# – 具有实体框架的行级安全性所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1259994.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存