在.NET中使用NHibernate时如何处理授权
-
08-07-2019 - |
题
我正在使用存储库模式使用NHibernate查询我们的数据库。这样做很容易:
public T GetById(int id){...}
但是当有人开始用查询字符串查看他们不允许的内容时,这并没有多大帮助。
为了使它复合,一些对象是父对象的深层嵌套子对象,应该对其执行授权。
例如博客 - <!> gt;作者 - <!> gt; post - <!> gt;评论。在这个人为的例子中,我们想让作者能够在这些帖子上编辑自己的帖子和评论,但不能看到或编辑其他作者的帖子和评论。检查帖子属于作者很容易,确保评论属于作者要困难一些。我们有一些更深入的实例。
那么......我们如何进行授权(在模型或存储库中)?
解决方案
您可以实现装饰器模式 - 我假设您正在使用DP / IoC容器来注入您的IRepositories?
您将创建一个ISecureRepository,用于检查所做的调用是否对特定用户/请求类型有效,然后将调用传递回IRepository。这也使您能够调用该方法,然后检查返回类型...
然后你设置你是IoC来使用一个包含IRepository的ISecureRepository ......
听起来很简单......
其他提示
这可能是满足您需求的良好实施方案: http:// www .codeproject.com / KB / web-security / objectlevelsecurity.aspx ,它是一个基于ACL的模型。
不隶属于 StackOverflow