## 登录判断
提供两种方法,
* 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容易犯的错
- 字符串操作