Gin middleware for session management with multi-backend support (currently cookie, Redis, Memcached, MongoDB, memstore).
Download and install it:
$ go get github.com/gin-contrib/sessionsImport it in your code:
import"github.com/gin-contrib/sessions"package main
import (
"github.com/gin-contrib/sessions""github.com/gin-contrib/sessions/cookie""github.com/gin-gonic/gin"
)
funcmain() {
r:=gin.Default()
store:=cookie.NewStore([]byte("secret"))
r.Use(sessions.Sessions("mysession", store))
r.GET("/incr", func(c*gin.Context) {
session:=sessions.Default(c)
varcountintv:=session.Get("count")
ifv==nil {
count=0
} else {
count=v.(int)
count++
}
session.Set("count", count)
session.Save()
c.JSON(200, gin.H{"count": count})
})
r.Run(":8000")
}package main
import (
"github.com/gin-contrib/sessions""github.com/gin-contrib/sessions/redis""github.com/gin-gonic/gin"
)
funcmain() {
r:=gin.Default()
store, _:=redis.NewStore(10, "tcp", "localhost:6379", "", []byte("secret"))
r.Use(sessions.Sessions("mysession", store))
r.GET("/incr", func(c*gin.Context) {
session:=sessions.Default(c)
varcountintv:=session.Get("count")
ifv==nil {
count=0
} else {
count=v.(int)
count++
}
session.Set("count", count)
session.Save()
c.JSON(200, gin.H{"count": count})
})
r.Run(":8000")
}package main
import (
"github.com/bradfitz/gomemcache/memcache""github.com/gin-contrib/sessions""github.com/gin-contrib/sessions/memcached""github.com/gin-gonic/gin"
)
funcmain() {
r:=gin.Default()
store:=memcached.NewStore(memcache.New("localhost:11211"), "", []byte("secret"))
r.Use(sessions.Sessions("mysession", store))
r.GET("/incr", func(c*gin.Context) {
session:=sessions.Default(c)
varcountintv:=session.Get("count")
ifv==nil {
count=0
} else {
count=v.(int)
count++
}
session.Set("count", count)
session.Save()
c.JSON(200, gin.H{"count": count})
})
r.Run(":8000")
}package main
import (
"github.com/gin-contrib/sessions""github.com/gin-contrib/sessions/mongo""github.com/gin-gonic/gin""gopkg.in/mgo.v2"
)
funcmain() {
r:=gin.Default()
session, err:=mgo.Dial("localhost:27017/test")
iferr!=nil {
// handle err
}
c:=session.DB("").C("sessions")
store:=mongo.NewStore(c, 3600, true, []byte("secret"))
r.Use(sessions.Sessions("mysession", store))
r.GET("/incr", func(c*gin.Context) {
session:=sessions.Default(c)
varcountintv:=session.Get("count")
ifv==nil {
count=0
} else {
count=v.(int)
count++
}
session.Set("count", count)
session.Save()
c.JSON(200, gin.H{"count": count})
})
r.Run(":8000")
}package main
import (
"github.com/gin-contrib/sessions""github.com/gin-contrib/sessions/memstore""github.com/gin-gonic/gin"
)
funcmain() {
r:=gin.Default()
store:=memstore.NewStore([]byte("secret"))
r.Use(sessions.Sessions("mysession", store))
r.GET("/incr", func(c*gin.Context) {
session:=sessions.Default(c)
varcountintv:=session.Get("count")
ifv==nil {
count=0
} else {
count=v.(int)
count++
}
session.Set("count", count)
session.Save()
c.JSON(200, gin.H{"count": count})
})
r.Run(":8000")
}