# 过滤器就是一种拦截器,对没有满足条件的请求进行拦截
## beego中使用过滤器:
beego.InsertFilter(pattern string, position int, filter FilterFunc, params ...bool)
* #### 第一个参数表示过滤的路由规则,支持通配符
* #### 第二个参数就是过滤器的位置,beego支持的有5种
* BeforeStatic 静态地址之前
* BeforeRouter 寻找路由之前
* BeforeExec 找到路由之后,开始执行相应的 Controller 之前
* AfterExec 执行完 Controller 逻辑之后执行的过滤器
* FinishRouter 执行完逻辑之后执行的过滤器
* #### 第三个参数为执行的函数
* func(\*context.Context) 参数必须是context.Context
* #### 第四个参数
* 第一个设置 returnOnOutput 的值,默认 true。即如果有输出是否跳过其他过滤器,默认只要有输出就不再执行其他过滤器,即执行完controller之后不会执行后面的过滤器
* 第二个表示是否重置过滤器的参数,默认是 false
**注意:使用 session 的 Filter 必须在 BeforeStatic 之后才能获取,因为 session 没有在这之前初始化。**
示例:
~~~
func main() {
// 过滤器
beego.InsertFilter("/*", beego.BeforeRouter, controllers.FilterUser,true,false)
beego.Run()
}
// 如果session中没有uid则跳转到登陆页面
var FilterUser = func(ctx *context.Context) {
if ctx.Request.RequestURI != "/login" { // 如果请求的url不是login,则重定向到login路径
ctx.Redirect(302, "/login")
}
}
~~~
- go环境搭建
- 解决go get网络慢的问题
- beego的安装
- bee的安装
- 编辑器
- go module
- 配置文件详解
- 配置文件其他说明
- 路由方法
- 路由
- 数据校验
- 校验函数
- 页面跳转
- 获取前端数据
- json文件的获取
- xsrf的用法
- xsrf的防护
- srfs和json的搭配
- flash的用法
- 过滤器
- url反转
- 各类数据的处理
- 模板函数
- 内置模板函数
- 自定义模板函数
- 模板
- 模板处理
- 模板渲染
- 视图文件的处理
- 静态文件
- 请求方式判断
- 验证码
- 另一种方法
- 分页类
- session
- 登录判断
- orm模块
- 使用方法
- mysql的安装
- 安装orm及驱动
- 建立模型
- 自定义模型
- 增删改查
- 高级查询
- 常见问题汇总
- 代码收藏
- 打包部署
- go build打包
- utils收藏
- 新goer容易犯的错
- 字符串操作