第一種:
package main import ( "github.com/gin-contrib/sessions" "github.com/gin-contrib/sessions/cookie" "github.com/gin-gonic/gin" "net/http" ) func main() { r := gin.Default() store := cookie.NewStore([]byte("secrect")) r.Use(sessions.Sessions("mySession",store)) r.GET("/saveSession", func(c *gin.Context) { session := sessions.Default(c) if session.Get("username") != "test"{ session.Set("username","test") session.Save() } c.JSON(http.StatusOK,gin.H{"msg":"session ok"}) }) r.GET("/getSession", func(c *gin.Context) { session := sessions.Default(c) if session.Get("username") == ""{ c.JSON(http.StatusBadRequest,gin.H{"msg":"no session"}) return }else{ name := session.Get("username") c.JSON(http.StatusOK,gin.H{"session":name}) return } }) r.Run(":8081") }
第二種,基於redis的方式
package main import ( "github.com/gin-contrib/sessions" "github.com/gin-contrib/sessions/redis" "github.com/gin-gonic/gin" ) func main() { r := gin.Default() store,_ := redis.NewStore(10,"tcp","localhost:6379","",[]byte("secret")) r.Use(sessions.Sessions("mySession",store)) r.GET("/list", func(c *gin.Context) { session := sessions.Default(c) var count int name := session.Get("count") if name == nil{ count=0 }else{ count = name.(int) count++ } session.Set("count",count) session.Save() c.JSON(200,gin.H{"count":count}) }) r.Run(":8081") }