网站首页 » Beego » Beego 控制器

Beego 控制器

June 27, 2020 Beego

控制器函数

Init(ct *context.Context, childName string, app interface{})

这个函数主要初始化了 Context、相应的 Controller 名称,模板名,初始化模板参数的容器 Data,app 即为当前执行的 Controller 的 reflecttype,这个 app 可以用来执行子类的方法。

*Prepare() <非常重要>

这个函数主要是为了用户扩展用的,这个函数会在下面定义的这些 Method 方法之前执行,用户可以重写这个函数实现类似用户验证之类。

Get()

如果用户请求的 HTTP Method 是 GET,那么就执行该函数,默认是 405,用户继承的子 struct 中可以实现了该方法以处理 Get 请求。

Post()

如果用户请求的 HTTP Method 是 POST,那么就执行该函数,默认是 405,用户继承的子 struct 中可以实现了该方法以处理 Post 请求。

Delete()

如果用户请求的 HTTP Method 是 DELETE,那么就执行该函数,默认是 405,用户继承的子 struct 中可以实现了该方法以处理 Delete 请求。

Put()

如果用户请求的 HTTP Method 是 PUT,那么就执行该函数,默认是 405,用户继承的子 struct 中可以实现了该方法以处理 Put 请求.

Head()

如果用户请求的 HTTP Method 是 HEAD,那么就执行该函数,默认是 405,用户继承的子 struct 中可以实现了该方法以处理 Head 请求。

Patch()

如果用户请求的 HTTP Method 是 PATCH,那么就执行该函数,默认是 405,用户继承的子 struct 中可以实现了该方法以处理 Patch 请求.

Options()

如果用户请求的HTTP Method是OPTIONS,那么就执行该函数,默认是 405,用户继承的子 struct 中可以实现了该方法以处理 Options 请求。

Finish()

这个函数是在执行完相应的 HTTP Method 方法之后执行的,默认是空,用户可以在子 struct 中重写这个函数,执行例如数据库关闭,清理数据之类的工作。

Render() error

这个函数主要用来实现渲染模板,如果 beego.AutoRender 为 true 的情况下才会执行。

利用Prepare() 方法完成基类中的用户登录状态验证,用户登录状态存在session中

/**
@author : Kevink
@time : 2020/6/26 10:07 上午
*/
package controllers

import "github.com/astaxie/beego"

type BaseController struct {
 beego.Controller
 IsLogin bool        //是否已经登录
 UserInfo interface{}     //用户信息
}

//这个函数主要是为了用户扩展用的,这个函数会在下面定义的这些 Method 方法之前执行,用户可以重写这个函数实现类似用户验证之类。
func (c *BaseController) Prepare()  {
 //做登录的session 验证
 userInfo := c.GetSession("user_info")
 if userInfo != nil {
     c.IsLogin = true
     c.UserInfo = userInfo
     return
 }
 c.Data["IsLogin"] = false
}
添加新评论