Skip to content

Commit

Permalink
add a note about sessions transcoder, rel: https://github.com/kataras…
Browse files Browse the repository at this point in the history
…/iris/issues/1517#issuecomment-630256473

Former-commit-id: 3ac995ea77b4629dc7b0d580b9e36d9e302b96ee
  • Loading branch information
kataras committed May 18, 2020
1 parent f3745ce commit 9b172fe
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 2 deletions.
12 changes: 12 additions & 0 deletions _examples/sessions/database/badger/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,18 @@ func main() {

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.
Expand Down
24 changes: 22 additions & 2 deletions _examples/sessions/overview/example/example.go
Original file line number Diff line number Diff line change
Expand Up @@ -77,9 +77,29 @@ func NewApp(sess *sessions.Sessions) *iris.Application {
session := sessions.Get(ctx)
// get a specific key, as string, if no found returns just an empty string
key := ctx.Params().Get("key")
name := session.GetString(key)
value := session.Get(key)

ctx.Writef("The name on the /set was: %s", name)
ctx.Writef("The [%s:%T] on the /set was: %v", key, value, value)
})

app.Get("/set/{type}/{key}/{value}", func(ctx iris.Context) {
session := sessions.Get(ctx)

key := ctx.Params().Get("key")
var value interface{}

switch ctx.Params().Get("type") {
case "int":
value = ctx.Params().GetIntDefault("value", 0)
case "float64":
value = ctx.Params().GetFloat64Default("value", 0.0)
default:
value = ctx.Params().Get("value")
}
session.Set(key, value)

value = session.Get(key)
ctx.Writef("Key: %s, Type: %T, Value: %v", key, value, value)
})

app.Get("/delete", func(ctx iris.Context) {
Expand Down

0 comments on commit 9b172fe

Please sign in to comment.