我正在研究使用Grails并使用GORM访问MongoDB。
假设我有一个名为BlogPost的域类,但只允许特定用户查看某些博客帖子。
现在,在控制器操作中,我可以轻松地执行类似BlogPost.where {}的操作,但这将返回所有博客帖子。
我需要一个集中的机制来过滤控制器执行查询时返回的域对象。
答案 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)
}
...
实际上你的问题包含很大的范围。如果问题有点具体,你可以得到更好的建议。