beego1.6.1升级到1.7版本遇到的session问题

tonny · 2016-09-17 04:01:37 · 2622 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2016-09-17 04:01:37 的主题,其中的信息可能已经有所发展或是发生改变。

昨天把beego从1.6.1升级到了1.7的版本,结果运行报错指明session的设置指明是session初始化时由于类型问题出错。

func init() {
    globalSessions, _ = session.NewManager("memory", `{"cookieName":"gosessionid", "enableSetCookie,omitempty": true, "gclifetime":3600, "maxLifetime": 3600, "secure": false, "sessionIDHashFunc": "sha1", "sessionIDHashKey": "", "cookieLifeTime": 3600, "providerConfig": ""}`)
    go globalSessions.GC()
}

这是以前beego文档里提供的session方法用来初始化数据,但是将beego1.6.1升级到1.7版本后,session这里会报错,ManagerConfig的类型不能在用这样的格式传递。于是去查beego/session的文档,发现NewManager的方法的第一个参数还是string类型,第二个参数变成了*ManagerConfig类型,是一个指针类型。再去看ManagerConfig是一个结构体

type ManagerConfig struct {
    CookieName              string `json:"cookieName"`
    EnableSetCookie         bool   `json:"enableSetCookie,omitempty"`
    Gclifetime              int64  `json:"gclifetime"`
    Maxlifetime             int64  `json:"maxLifetime"`
    Secure                  bool   `json:"secure"`
    CookieLifeTime          int    `json:"cookieLifeTime"`
    ProviderConfig          string `json:"providerConfig"`
    Domain                  string `json:"domain"`
    SessionIDLength         int64  `json:"sessionIDLength"`
    EnableSidInHttpHeader   bool   `json:"enableSidInHttpHeader"`
    SessionNameInHttpHeader string `json:"sessionNameInHttpHeader"`
    EnableSidInUrlQuery     bool   `json:"enableSidInUrlQuery"`
}

于是可以这样来写

func init() {
    var structdata session.ManagerConfig
    structdata.CookieName = "gosessionid"
    structdata.EnableSetCookie = true
    structdata.Gclifetime = 3600
    structdata.Maxlifetime = 3600
    structdata.Secure = false
    structdata.CookieLifeTime = 3600
    structdata.ProviderConfig = ""
    globalSessions, _ = session.NewManager("memory", &structdata)
    go globalSessions.GC()
}

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

2622 次点击  ∙  1 赞  
加入收藏 微博
1 回复  |  直到 2016-12-26 07:25:50
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传