package main import ( "context" "github.com/gin-contrib/sessions" "github.com/gin-contrib/sessions/mongo/mongodriver" "github.com/gin-gonic/gin" "go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo/options" ) func main() { r := gin.Default() mongoOptions := options.Client().ApplyURI("mongodb://localhost:27017") client, err := mongo.NewClient(mongoOptions) if err != nil { // handle err } if err := client.Connect(context.Background()); err != nil { // handle err } c := client.Database("test").Collection("sessions") store := mongodriver.NewStore(c, 3600, true, []byte("secret")) r.Use(sessions.Sessions("mysession", store)) r.GET("/incr", func(c *gin.Context) { session := sessions.Default(c) var count int v := session.Get("count") if v == nil { count = 0 } else { count = v.(int) count++ } session.Set("count", count) session.Save() c.JSON(200, gin.H{"count": count}) }) r.Run(":8000") }