76 lines
1.4 KiB
Markdown
76 lines
1.4 KiB
Markdown
|
# sessions
|
||
|
|
||
|
Gin middleware for session management with multi-backend support (currently cookie, Redis).
|
||
|
|
||
|
## EOL-warning
|
||
|
|
||
|
**This package has been abandoned on 2016-12-07. Please use [gin-contrib/sessions](https://github.com/gin-contrib/sessions) instead.**
|
||
|
|
||
|
## Examples
|
||
|
|
||
|
#### cookie-based
|
||
|
|
||
|
```go
|
||
|
package main
|
||
|
|
||
|
import (
|
||
|
"github.com/gin-gonic/contrib/sessions"
|
||
|
"github.com/gin-gonic/gin"
|
||
|
)
|
||
|
|
||
|
func main() {
|
||
|
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)
|
||
|
var count int
|
||
|
v := session.Get("count")
|
||
|
if v == nil {
|
||
|
count = 0
|
||
|
} else {
|
||
|
count = v.(int)
|
||
|
count += 1
|
||
|
}
|
||
|
session.Set("count", count)
|
||
|
session.Save()
|
||
|
c.JSON(200, gin.H{"count": count})
|
||
|
})
|
||
|
r.Run(":8000")
|
||
|
}
|
||
|
```
|
||
|
|
||
|
#### Redis
|
||
|
|
||
|
```go
|
||
|
package main
|
||
|
|
||
|
import (
|
||
|
"github.com/gin-gonic/contrib/sessions"
|
||
|
"github.com/gin-gonic/gin"
|
||
|
)
|
||
|
|
||
|
func main() {
|
||
|
r := gin.Default()
|
||
|
store, _ := sessions.NewRedisStore(10, "tcp", "localhost:6379", "", []byte("secret"))
|
||
|
r.Use(sessions.Sessions("session", store))
|
||
|
|
||
|
r.GET("/incr", func(c *gin.Context) {
|
||
|
session := sessions.Default(c)
|
||
|
var count int
|
||
|
v := session.Get("count")
|
||
|
if v == nil {
|
||
|
count = 0
|
||
|
} else {
|
||
|
count = v.(int)
|
||
|
count += 1
|
||
|
}
|
||
|
session.Set("count", count)
|
||
|
session.Save()
|
||
|
c.JSON(200, gin.H{"count": count})
|
||
|
})
|
||
|
r.Run(":8000")
|
||
|
}
|
||
|
```
|