在过滤器的主体内,你可以定义下列过滤器(Filters)的拦截器类型之一:
• before - 操作(Action)之前执行. 返回false来指示后续的控制器(controller)和操作(action)不会被执行
• after - 操作(Action)之后执行. 获取第一参数作为视图模型
• afterView - 视图渲染之后执行
例如,为实现普通身份验证,可以定义如下过滤器(Filters):class SecurityFilters {
def filters = {
loginCheck(controller:'*', action:'*') {
before = {
if(!session.user && !actionName.equals('login')) {
redirect(action:'login')
return false
}
}
}
}
}
这里的loginCheck过滤器(Filters)使用一个before拦截器来执行代码块,检查是否一个用户在session内,假如不是,重定向到login操作(action)。
注意,如何返回false确保操作(action)本身不被执行 .