在.NET中使用NHibernate时如何处理授权

时间:2008-11-19 23:45:47

标签: .net nhibernate authorization

我正在使用存储库模式使用NHibernate查询我们的数据库。这样做很容易:

public T GetById(int id){...}

但是当有人开始用查询字符串查看他们不允许的内容时,这并没有多大帮助。

为了使它复合,一些对象是父对象的深层嵌套子对象,应该对其执行授权。

例如博客 - >作者 - >发布 - >评论。在这个人为的例子中,我们想让作者能够在这些帖子上编辑自己的帖子和评论,但不能看到或编辑其他作者的帖子和评论。检查帖子属于作者很容易,确保评论属于作者要困难一些。我们有一些更深入的实例。

那么......我们如何进行授权(在模型或存储库中)?

2 个答案:

答案 0 :(得分:1)

您可以实现装饰器模式 - 我假设您正在使用DP / IoC容器来注入您的IRepositories?

您将创建一个ISecureRepository,用于检查所做的调用是否对特定用户/请求类型有效,然后将调用传递回IRepository。这也使您能够调用该方法,然后检查返回类型...

然后你设置你是IoC来使用一个包含IRepository的ISecureRepository ......

听起来很简单......

答案 1 :(得分:0)

这可能是满足您需求的良好实现:http://www.codeproject.com/KB/web-security/objectlevelsecurity.aspx,它是基于ACL的模型。