## 登錄判斷
提供兩種方法,
* 1、控制器和動作名判斷,較復雜。
* 2、過濾器函數,簡單明了,易用。推薦....
### 控制器和動作名判斷
建立一個AdminBaseController
```
// Controller基類繼承封裝
type AdminBaseController struct {
beego.Controller
controllerName string
actionName string
}
// run before get
func (p \*AdminBaseController) Prepare() {
controllerName, actionName := p.GetControllerAndAction()
p.controllerName = strings.ToLower(controllerName\[0 : len(controllerName)-10\])
p.actionName = strings.ToLower(actionName)
logs.Info("visited:" + p.controllerName + "/" + p.actionName)
// 所有以Admin開頭的Controller都進行session判斷,所以需要判斷的都要以admin開頭,如adminarticalController
reg := regexp.MustCompile("admin")
Cname := reg.FindString(p.controllerName)
// fmt.Println(Cname)
if Cname == "admin" && p.actionName != "login" {
if p.GetSession("username") == nil {
logs.Info("login Unauthorized")
p.History("未登錄", "/login")
}
}
}
```
### 過濾器函數
在路由中用過濾器函數,在在router.go的init函數中加入以下代碼
```
// 所有以/admin/\*的路由均判斷是否有session值
beego.InsertFilter("/admin/\*", beego.BeforeRouter, filterFunc)
// session判斷結束
```
在router.go新建一個filerFunc方法
```
// 判斷session
var filterFunc = func(Ctx \*context.Context) {
var username = Ctx.Input.Session("username")
if username == nil {
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容易犯的錯
- 字符串操作