从与单个控制器打交道更进一步,把安全应用到所有控制器。要完成这一点,我们需要创建过滤器。
1.创建过器滤器
命令行输入grails create-filters Admin
2.会在grails-app/conf下生成AdminFilters.groovy
这个例子是把all过滤器更名为adminOnly,任何可能更新记录的调用都被限制为登录的管理员才能操作。
注:一个经常需要留意的地方是为过滤器定义多个Action的方式。在beforeInterceptor中,传入的是Action列表。在过滤器中,它们使用正则表达式来指定。除了这个区别,可以在过滤器中完成所有在拦截器中做的事情。
1.创建过器滤器
命令行输入grails create-filters Admin
2.会在grails-app/conf下生成AdminFilters.groovy
这个例子是把all过滤器更名为adminOnly,任何可能更新记录的调用都被限制为登录的管理员才能操作。
class AdminFilters {
def filters = {
adminOnly(controller:'*', action:'(create|edit|update|delete|save)') {
before = {
if(!session?.user?.admin){
flash.message="Sorry,admin only"
redirect(controller:'race',action:'list')
return false
}
}
}
}
}
注:一个经常需要留意的地方是为过滤器定义多个Action的方式。在beforeInterceptor中,传入的是Action列表。在过滤器中,它们使用正则表达式来指定。除了这个区别,可以在过滤器中完成所有在拦截器中做的事情。