Revel 过滤器


本文整理自网络,侵删。

过滤器是Revel框架的中间件 – 是组成请求处理管道的独立的功能。他们执行框架的所有功能。

过滤器类型是一个简单的函数:

type Filter func(c *Controller, filterChain []Filter)

每个过滤器负责调用过滤器链中的下一个过滤器。下面是个默认的过滤器栈:

// Filters 是默认的全局过滤器集。
// 可以在程序初始化时设置它。
var Filters = []Filter{
    PanicFilter,             // 从恐慌中恢复,并显示一个错误页面。
    RouterFilter,            // 负责解析路由,并选择正确的控制器方法。
    FilterConfiguringFilter, // 用于添加/删除每个动作过滤的钩子。
    ParamsFilter,            // 解析参数到 Controller.Params 中。
    SessionFilter,           // 恢复和写入会话 cookie。
    FlashFilter,             // 恢复和写入 flash cookie。
    ValidationFilter,        // 恢复保存验证错误并保存新的Cookie中。
    I18nFilter,              // 解析请求语言。
    InterceptorFilter,       // 执行拦截器。
    ActionInvoker,           // 调用控制器。
}

过滤器链配置

全局配置

程序可以在 init() 中重写 revel.Filters 变量,来配置过滤器链 (默认在 app/init.go)。

func init() {
    // Filters 是默认的全局过滤器集。
    revel.Filters = []Filter{
        PanicFilter,             // 从恐慌中恢复,并显示一个错误页面。
        RouterFilter,            // 负责解析路由,并选择正确的控制器方法。
        FilterConfiguringFilter, // 用于添加/删除每个动作过滤的钩子。
        ParamsFilter,            // 解析参数到 Controller.Params 中。
        SessionFilter,           // 恢复和写入会话 cookie。
        FlashFilter,             // 恢复和写入 flash cookie。
        ValidationFilter,        // 恢复保存验证错误并保存新的Cookie中。
        I18nFilter,              // 解析请求语言。
        InterceptorFilter,       // 执行拦截器。
        ActionInvoker,           // 调用控制器。
    }
}

每个请求沿着过滤器链从上到下依次执行。

Per-Action configuration

尽管所有的请求都被发往过滤器链 revel.Filters, Revel 也提供了 过滤器配置, 允许开发者根据操作或控制器添加、插入、删除过滤器。

阅读剩余部分

相关阅读 >>

Revel 部署

Revel 模板

Revel 概念

Revel results

Revel 配置文件app.conf

Revel 测试

Revel 常见问题

Revel websockets

Revel 日志类型

Revel 控制器概要

更多相关阅读请进入《Revel》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...