拦截器

    • 请求记录
    • 状态保持
      在 Revel 中, 有两种形式的拦截器:

    • 函数拦截器:请参考 接口.

      • 不能挂接到某个特定的控制器方法
      • 可以应用到所有的、任意的控制器上
    • 方法拦截器:一个不带参数、并返回一个 的控制器方法

      • 只能拦截控制器方法
    • BEFORE: 在请求被路由到以后,并且session, flash, 参数解析之后、控制器方法被调用之前执行拦截。
    • AFTER: 在请求返回了一个结果, 但是结果被应用之前执行拦截。如果出现了panic,拦截不会被调用。
    • PANIC: 在控制器方法中或应用结果时出现panic退出后被拦截。
    • FINALLY: 在控制器方法执行完毕并且结果被应用之后被拦截。

    拦截器通常返回 , 在这种情况下,需要继续处理请求,不能中断。

    返回一个非 的效果, 取决于拦截器被调用的时间:

    • BEFORE: 没有进一步的拦截器被调用, 也不是一个控制器方法。
    • AFTER: 所有拦截器仍然可以运行。
    • FINALLY: 所有拦截器仍然可以运行。
      在任何情况下,返回的结果都将附加到任何现有的结果上:

    BEFORE:返回的结果是保证是最终的。

    下面是定义和注册函数拦截器的一个简单例子。

    方法拦截器

    方法拦截器有两种方式的签名:

    下面是个同样的例子,只能拦截一个控制器。