beego操作session
2016-03-06 15:42
429 查看
因为学艺不精,用beego一年了,因为升级后发现存cookie不起作用了,只好改session了。
</pre><pre name="code" class="plain">import ( "github.com/astaxie/beego" //(1)导入session包 "github.com/astaxie/beego/session" ) //(2)建立一个全局session mananger对象 var globalSessions *session.Manager //(3)在初始化“全局session mananger对象” 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() }
//(4)获取当前的请求会话,并返回当前请求会话的对象 sess, _ := globalSessions.SessionStart(c.Ctx.ResponseWriter, c.Ctx.Request) defer sess.SessionRelease(c.Ctx.ResponseWriter) //(5)根据当前请求对象,设置一个session <span style="white-space:pre"> </span>sess.Set("uname", user.Username) <span style="white-space:pre"> </span>sess.Set("pwd", user.Password) //(6)从session中读取值 // c.Data["Email"] = sess.Get("mySession")(7)检查登录
func checkAccount(ctx *context.Context) bool { var user models.User //(4)获取当前的请求会话,并返回当前请求会话的对象 //但是我还是建议大家采用 SetSession、GetSession、DelSession 三个方法来操作,避免自己在操作的过程中资源没释放的问题 sess, _ := globalSessions.SessionStart(ctx.ResponseWriter, ctx.Request) defer sess.SessionRelease(ctx.ResponseWriter) v := sess.Get("uname") if v == nil { return false } else { user.Username = v.(string) v = sess.Get("pwd") user.Password = v.(string) //ck.Value err := models.ValidateUser(user) if err == nil { return true } else { return false } }
(8)退出登录
isExit := c.Input().Get("exit") == "true" url1 := c.Input().Get("url") //这里不支持这样的url,http://192.168.9.13/login?url=/topic/add?id=955&mid=3 url2 := c.Input().Get("mid") var url string if url2 == "" { url = url1 } else { url = url1 + "&mid=" + url2 } c.Data["Url"] = url sess, _ := globalSessions.SessionStart(c.Ctx.ResponseWriter, c.Ctx.Request) defer sess.SessionRelease(c.Ctx.ResponseWriter) if isExit { // c.Ctx.SetCookie("uname", "", -1, "/")<span style="font-family: Arial, Helvetica, sans-serif;">//这个不行</span> // c.Ctx.SetCookie("pwd", "", -1, "/")<span style="font-family: Arial, Helvetica, sans-serif;">//这个不行</span> // c.DelSession("gosessionid")<span style="font-family: Arial, Helvetica, sans-serif;">//这个不行</span> // c.DelSession("uname")//这个不行 // c.Destroy/Session()<span style="font-family: Arial, Helvetica, sans-serif;">//这个不行</span> sess.Delete("uname") //这个可行。 // sess.Flush()//这个不灵 c.Redirect("/", 301) return }
相关文章推荐
- Igor In the Museum(搜搜搜151515151515******************************************************1515151515151515151515)
- 不挂vp_n,不修改host访问google
- CodeForces 598D-Igor In the Museum【DFS】
- Ubuntu14.04下,GO语言的安装!
- Ubuntu14.04下,GO语言的安装!
- HDU 1847 Good Luck in CET-4 Everybody!
- golang tree 辅助操作
- golang中的坑
- 设计模式-命令模式(Go语言描述)
- Kiss you goodbye
- Django Admin实现上传图片校验功能
- Go代理,修改标题
- go语言 golang defer 关注点
- C-Hexagons!
- mac os上安装mongoldb
- Django Admin实现上传图片校验功能
- 编写GO的WEB开发框架 (五): 请求参数封装
- [HDU 3635]Dragon Balls[并查集][路径压缩]
- 1030 Discovering Gold(水DP)
- go学习资料汇总