2013-05-17 42 views
0

我正在研究使用Grails并使用GORM访问MongoDB。DomainClass.where查询,授权和过滤

说我有一个名为BlogPost的域名类,但是一个特定的用户只能看到某些博客文章。

现在,在一个控制器动作中,我可以轻松地做一些类似BlogPost.where的事情,但是这将返回所有博客文章。

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

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

回答

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)    

} 
... 

其实你的问题包含一个很大的范围。如果问题更具体些,你可以得到更好的建议。