转载自:https://blog.csdn.net/skh2015java/article/details/53944542


beego 支持自定义过滤中间件,例如安全验证,强制跳转等。

过滤器函数如下所示:

beego.InsertFilter(pattern string, postion int, filter FilterFunc, params ...bool)

InsertFilter 函数的三个必填参数,一个可选参数

· pattern 路由规则,可以根据一定的规则进行路由,如果你全匹配可以用 *

· postion 执行 Filter 的地方,四个固定参数如下,分别表示不同的执行过程

1. BeforeRouter 寻找路由之前

2. BeforeExec 找到路由之后,开始执行相应的 Controller 之前

3. AfterExec 执行完 Controller 逻辑之后执行的过滤器

4. FinishRouter 执行完逻辑之后执行的过滤器

· filter filter 函数 type FilterFunc func(*context.Context)

· params

1. 设置 returnOnOutput 的值(默认true), 是否允许如果有输出是否跳过其他filters,默认只要有输出就不再执行其他filters

2. 是否重置filters的参数,默认是false,因为在filters的pattern和本身的路由的pattern冲突的时候,可以把filters的参数重置,这样可以保证在后续的逻辑中获取到正确的参数,例如设置了/api/*的filter,同时又设置了/api/docs/*