DomainClass.where查询,授权和过滤

时间:2013-05-17 08:20:08

标签: mongodb grails gorm

我正在研究使用Grails并使用GORM访问MongoDB。

假设我有一个名为BlogPost的域类,但只允许特定用户查看某些博客帖子。

现在,在控制器操作中,我可以轻松地执行类似BlogPost.where {}的操作,但这将返回所有博客帖子。

我需要一个集中的机制来过滤控制器执行查询时返回的域对象。

使用的插件是http://grails.org/plugin/mongodb

1 个答案:

答案 0 :(得分:0)

您可以在域类中使用GORM事件“onLoad”并在那里应用过滤器。例如:

Class BlogPost{
   String content    
   String viewableByRole //it might be another domain for roles/string/enum as per your requirement
   ....
   def onLoad() {
       //apply your condition here
} 
}

见这里:GORM Events

或者您可以在服务类或域类中定义方法以应用过滤器。例如,

...
   def getAllPost() {
       def currentRole = take_role_from_security_plugin_like_shiro_or_spring_security_session etc
       return BlogPost.findAllByViewableByRole(currentRole)               

}
...

实际上你的问题包含很大的范围。如果问题有点具体,你可以得到更好的建议。