A session middleware for gin framework.
Download and install:
go get github.com/Q1mi/ginsession
Import it in you code:
import "github.com/Q1mi/ginsession"
package main
import (
"fmt"
"log"
"net/http"
"github.com/Q1mi/ginsession"
"github.com/gin-gonic/gin"
)
func main(){
r := gin.Default()
mgrObj, err := ginsession.CreateSessionMgr("redis", "localhost:6379")
if err != nil {
log.Fatalf("create manager obj failed, err:%v\n", err)
return
}
sm := ginsession.SessionMiddleware(mgrObj, ginsession.Options{
Path: "/",
Domain: "127.0.0.1",
MaxAge: 60,
Secure:false,
HttpOnly:true,
})
r.Use(sm)
r.GET("/incr", func(c *gin.Context) {
session := c.MustGet("session").(ginsession.Session)
fmt.Printf("%#v\n", session)
var count int
v, err := session.Get("count")
if err != nil{
log.Printf("get count from session failed, err:%v\n", err)
count = 0
} else {
count = v.(int)
count++
}
session.Set("count", count)
session.Save()
c.String(http.StatusOK, "count:%v", count)
})
r.Run()
}
warning: this is just for test!
package main
import (
"fmt"
"log"
"net/http"
"github.com/Q1mi/ginsession"
"github.com/gin-gonic/gin"
)
func main(){
r := gin.Default()
mgrObj, err := ginsession.CreateSessionMgr("memory", "")
if err != nil {
log.Fatalf("create manager obj failed, err:%v\n", err)
return
}
sm := ginsession.SessionMiddleware(mgrObj, ginsession.Options{
Path: "/",
Domain: "127.0.0.1",
MaxAge: 60,
Secure:false,
HttpOnly:true,
})
r.Use(sm)
r.GET("/incr", func(c *gin.Context) {
session := c.MustGet("session").(ginsession.Session)
fmt.Printf("%#v\n", session)
var count int
v, err := session.Get("count")
if err != nil{
log.Printf("get count from session failed, err:%v\n", err)
count = 0
} else {
count = v.(int)
count++
}
session.Set("count", count)
session.Save()
c.String(http.StatusOK, "count:%v", count)
})
r.Run()
}
- Add more support...