beego context新老版本使用

Jackey Golang 5,141 次浏览 , , , 没有评论

我们可以controller获得Ctx,然后进行后续操作,比如设置cookie。

  1. func (c *LoginController) Post() {
  2. c.Ctx.SetCookie("uname", uname, maxAge, "/")
  3. }

同时,我们也可以通过获取cookie中的值:

  1. func (c *LoginController) Post() {
  2. c.ctx.Request.Cookie("uname")
  3. }

但是,在不同版本中对应的ctx的类型和package有所不同。

在老版本中是通过引入beego包就可以直接使用beego.Context获取的到。
比如:

  1. import "github.com/astaxie/beego"
  2. func checkAccount(ctx *beego.Context) bool {}

但是,在新版本中只能新引入另外一个包来获取:

  1. import "github.com/astaxie/beego/context"
  2. func checkAccount(ctx *context.Context) bool {
  3. ck, err := ctx.Request.Cookie("uname")
  4. if err != nil {
  5. return false
  6. }
  7. uname := ck.Value
  8. ck, err = ctx.Request.Cookie("pwd")
  9. if err != nil {
  10. return false
  11. }
  12. pwd := ck.Value
  13. return beego.AppConfig.String("uname") == uname &&
  14. beego.AppConfig.String("pwd") == pwd
  15. }
  16. //调用方式
  17. func (c *HomeController) Get() {
  18. c.Data["IsLogin"] = checkAccount(c.Ctx)
  19. c.TplName = "home.html"
  20. }

因此在升级版本的过程中需要留意此处!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

Go