本篇文章主要介绍了"Grails的beforeInterceptor拦截器",主要涉及到Grails的beforeInterceptor拦截器方面的内容,对于Grails的beforeInterceptor拦截器感兴趣的同学可以参考一下。
可选的beforeInterceptor
属性可以在action开始执行之前中断它的运行。
简单的跟踪拦截器:
def beforeInterceptor = {
println "Tracing action ${actionUri}"
}
一个安全验证拦截器保证用户已登录:
def beforeInterceptor = [action:this.&auth,except:'login'] // defined as a regular method so its private def auth() { if(!session.user) { redirect(action:'login') return false } } def login = { // display login page }
beforeInterceptor
拦截器可以在action开始之前中断它的运行,如果拦截器返回false
则该action不会继续执行了。可以为controller中所有的action都加上这种拦截器,如下:
def beforeInterceptor = {
println "Tracing action ${actionUri}"
}
上面的声明需要放在controller的定义中,它会在所有action运行前执行,但不会影响action的处理流程,一个常见的用法就是认证:
def beforeInterceptor = [action:this.&auth,except:'login'] // defined as a regular method so its private def auth() { if(!session.user) { redirect(action:'login') return false } } def login = { // display login page }
上面的代码定一个叫'auth'的方法,一个不会成为暴漏在外面的action的方法(就是说它是私有的)。'beforeInterceptor'属性为所有action(除了login action)定义了一个拦截器,拦截器会去执行'auth'方法,有了Groovy的方法指针语法。在这个方法中,先判断当前用户是否被设置了session,若没有的话,则会重定向到login action并返回false,这样,被中断的action的其他代码就不会被执行。