Skip to content

Repository files navigation

sessions

Build StatuscodecovGo Report CardGoDocJoin the chat at https://gitter.im/gin-gonic/gin

Gin middleware for session management with multi-backend support (currently cookie, Redis, Memcached, MongoDB, memstore).

Usage

Start using it

Download and install it:

$ go get github.com/gin-contrib/sessions

Import it in your code:

import"github.com/gin-contrib/sessions"

Examples

cookie-based

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")
}

Redis

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")
}

Memcached

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")
}

MongoDB

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")
}

memstore

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")
}

About

Gin middleware for session management

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages