iris/_examples/sessions/database/badger/main.go
Gerasimos (Makis) Maropoulos 9b172fe4ab add a note about sessions transcoder, rel: https://github.com/kataras/iris/issues/1517#issuecomment-630256473
Former-commit-id: 3ac995ea77b4629dc7b0d580b9e36d9e302b96ee
2020-05-18 18:43:39 +03:00

57 lines
1.4 KiB
Go

package main
import (
"time"
"github.com/kataras/iris/v12"
"github.com/kataras/iris/v12/sessions"
"github.com/kataras/iris/v12/sessions/sessiondb/badger"
"github.com/kataras/iris/v12/_examples/sessions/overview/example"
)
func main() {
db, err := badger.New("./data")
if err != nil {
panic(err)
}
// close and unlock the database when control+C/cmd+C pressed
iris.RegisterOnInterrupt(func() {
db.Close()
})
defer db.Close() // close and unlock the database if application errored.
// The default transcoder is the JSON one,
// based on the https://golang.org/pkg/encoding/json/#Unmarshal
// you can only retrieve numbers as float64 types:
// * bool, for booleans
// * float64, for numbers
// * string, for strings
// * []interface{}, for arrays
// * map[string]interface{}, for objects.
// If you want to save the data per go-specific types
// you should change the DefaultTranscoder to the GobTranscoder one:
// sessions.DefaultTranscoder = sessions.GobTranscoder{}
sess := sessions.New(sessions.Config{
Cookie: "sessionscookieid",
Expires: 1 * time.Minute, // <=0 means unlimited life. Defaults to 0.
AllowReclaim: true,
})
sess.OnDestroy(func(sid string) {
println(sid + " expired and destroyed from memory and its values from database")
})
//
// IMPORTANT:
//
sess.UseDatabase(db)
app := example.NewApp(sess)
app.Listen(":8080")
}