golang 集成 sessions 使用注意事项

? ? golang 集成 sessions 使用注意事项

除go基本类型外,复杂对象结构存储,必须先注册

比如我们使用如下

$ go get github.com/tommy351/gin-sessions
package routers

import (
       "github.com/gin-gonic/gin"

       "github.com/tommy351/gin-sessions"
       "blog/models"
       "fmt"
)

func init() {

       router := gin.Default()

       //设置静态资源
router.Static("/statics","./assets/statics")

       //设置模板路径
router.LoadHTMLGlob("templates/**")

       //设置session midddleware
store := sessions.NewCookieStore([]byte("dongtian_go_session"))
       router.Use(sessions.Middleware("go_dongtian_sesion",store))


       router.GET("/ping", func(c *gin.Context) {
              c.JSON(200, gin.H{
                     "message": "pong",
              })

       })

       router.GET("/set", func(c *gin.Context) {

              session := sessions.Get(c)
              user := models.User{}
              user.Id = 100
user.UserName = "冬天"
session.Set("user",user)
              session.Save()
              c.JSON(200, gin.H{
                     "message": "set",
              })
       })

       router.GET("/get", func(c *gin.Context) {

              session := sessions.Get(c)

              user := session.Get("user")
              fmt.Println("user  =",user)
              c.JSON(200, gin.H{
                     "message": "get",
              })
       })
       router.Run(":8080")
}
models 下的User
package models

import (
       "time"
       "encoding/gob"
)

type User struct {
       Id            int    `xorm:"pk"`
UserName      string `xorm:"char(32)"`
Password      string `xorm:"char(32)"`
NickName      string `xorm:"char(32)"`
NetName       string `xorm:"char(32)"`
Job           string `xorm:"char(32)"`
Address       string `xorm:"varchar(255)"`
Mobile        string `xorm:"char(32)"`
Email         string `xorm:"char(32)"`
State         int
       RegIp         string
       LastLoginIp   string
       CreateTime    time.Time `xorm:"index(index_user_create_time)","created"`
UpdateTime    time.Time `xorm:"index(index_user_update_time)","updated"`
LastLoginTime time.Time `xorm:"index(index_user_last_login_time)"`
}


func init(){
     //必须encoding/gob编码解码进行注册 
       gob.Register(&User{})
}
文章来自:http://qq466862016.iteye.com/blog/2277670
© 2021 jiaocheng.bubufx.com  联系我们
ICP备案:鲁ICP备09046678号-3