我正在使用存储库模式使用 NHibernate 查询我们的数据库。它使执行以下操作变得非常容易:
公共 T GetById(int id) {...}
但是当有人开始使用查询字符串来查看他们不允许看到的东西时,这并没有多大帮助。
为了复合它,一些对象是应该对其执行授权的父对象的深层嵌套子对象。
例如博客 --> 作者 --> 帖子 --> 评论。在这个人为的示例中,我们希望作者能够编辑他们自己的帖子和对这些帖子的评论,但不能查看或编辑其他作者的帖子。检查帖子属于作者很容易,确定评论属于作者就有点困难了。我们有一些更深入的例子。
那么......我们如何进行授权(在模型或存储库中)?