Gin middleware for session management with multi-backend support (currently cookie, Redis, Memcached, MongoDB).
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-gonic/gin"
)
funcmain() {
r:=gin.Default()
store:=sessions.NewCookieStore([]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-gonic/gin"
)
funcmain() {
r:=gin.Default()
store, _:=sessions.NewRedisStore(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-gonic/gin"
)
funcmain() {
r:=gin.Default()
store:=sessions.NewMemcacheStore(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-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:=sessions.NewMongoStore(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")
}