# 過濾器就是一種攔截器,對沒有滿足條件的請求進行攔截
## 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容易犯的錯
- 字符串操作