summaryrefslogtreecommitdiff
path: root/vendor/github.com/gin-contrib/sessions/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/gin-contrib/sessions/README.md')
-rw-r--r--vendor/github.com/gin-contrib/sessions/README.md388
1 files changed, 213 insertions, 175 deletions
diff --git a/vendor/github.com/gin-contrib/sessions/README.md b/vendor/github.com/gin-contrib/sessions/README.md
index 94e445250..7d5c2305a 100644
--- a/vendor/github.com/gin-contrib/sessions/README.md
+++ b/vendor/github.com/gin-contrib/sessions/README.md
@@ -1,6 +1,7 @@
# sessions
-[![Build Status](https://travis-ci.org/gin-contrib/sessions.svg)](https://travis-ci.org/gin-contrib/sessions)
+[![Run CI Lint](https://github.com/gin-contrib/sessions/actions/workflows/lint.yml/badge.svg)](https://github.com/gin-contrib/sessions/actions/workflows/lint.yml)
+[![Run Testing](https://github.com/gin-contrib/sessions/actions/workflows/testing.yml/badge.svg)](https://github.com/gin-contrib/sessions/actions/workflows/testing.yml)
[![codecov](https://codecov.io/gh/gin-contrib/sessions/branch/master/graph/badge.svg)](https://codecov.io/gh/gin-contrib/sessions)
[![Go Report Card](https://goreportcard.com/badge/github.com/gin-contrib/sessions)](https://goreportcard.com/report/github.com/gin-contrib/sessions)
[![GoDoc](https://godoc.org/github.com/gin-contrib/sessions?status.svg)](https://godoc.org/github.com/gin-contrib/sessions)
@@ -13,6 +14,7 @@ Gin middleware for session management with multi-backend support:
- [memcached](#memcached)
- [MongoDB](#mongodb)
- [memstore](#memstore)
+- [PostgreSQL](#postgresql)
## Usage
@@ -21,7 +23,7 @@ Gin middleware for session management with multi-backend support:
Download and install it:
```bash
-$ go get github.com/gin-contrib/sessions
+go get github.com/gin-contrib/sessions
```
Import it in your code:
@@ -38,27 +40,27 @@ import "github.com/gin-contrib/sessions"
package main
import (
- "github.com/gin-contrib/sessions"
- "github.com/gin-contrib/sessions/cookie"
- "github.com/gin-gonic/gin"
+ "github.com/gin-contrib/sessions"
+ "github.com/gin-contrib/sessions/cookie"
+ "github.com/gin-gonic/gin"
)
func main() {
- r := gin.Default()
- store := cookie.NewStore([]byte("secret"))
- r.Use(sessions.Sessions("mysession", store))
+ r := gin.Default()
+ store := cookie.NewStore([]byte("secret"))
+ r.Use(sessions.Sessions("mysession", store))
- r.GET("/hello", func(c *gin.Context) {
- session := sessions.Default(c)
+ r.GET("/hello", func(c *gin.Context) {
+ session := sessions.Default(c)
- if session.Get("hello") != "world" {
- session.Set("hello", "world")
- session.Save()
- }
+ if session.Get("hello") != "world" {
+ session.Set("hello", "world")
+ session.Save()
+ }
- c.JSON(200, gin.H{"hello": session.Get("hello")})
- })
- r.Run(":8000")
+ c.JSON(200, gin.H{"hello": session.Get("hello")})
+ })
+ r.Run(":8000")
}
```
@@ -68,109 +70,107 @@ func main() {
package main
import (
- "github.com/gin-contrib/sessions"
- "github.com/gin-contrib/sessions/cookie"
- "github.com/gin-gonic/gin"
+ "github.com/gin-contrib/sessions"
+ "github.com/gin-contrib/sessions/cookie"
+ "github.com/gin-gonic/gin"
)
func main() {
- r := gin.Default()
- store := cookie.NewStore([]byte("secret"))
- sessionNames := []string{"a", "b"}
- r.Use(sessions.SessionsMany(sessionNames, store))
-
- r.GET("/hello", func(c *gin.Context) {
- sessionA := sessions.DefaultMany(c, "a")
- sessionB := sessions.DefaultMany(c, "b")
-
- if sessionA.Get("hello") != "world!" {
- sessionA.Set("hello", "world!")
- sessionA.Save()
- }
-
- if sessionB.Get("hello") != "world?" {
- sessionB.Set("hello", "world?")
- sessionB.Save()
- }
-
- c.JSON(200, gin.H{
- "a": sessionA.Get("hello"),
- "b": sessionB.Get("hello"),
- })
- })
- r.Run(":8000")
+ r := gin.Default()
+ store := cookie.NewStore([]byte("secret"))
+ sessionNames := []string{"a", "b"}
+ r.Use(sessions.SessionsMany(sessionNames, store))
+
+ r.GET("/hello", func(c *gin.Context) {
+ sessionA := sessions.DefaultMany(c, "a")
+ sessionB := sessions.DefaultMany(c, "b")
+
+ if sessionA.Get("hello") != "world!" {
+ sessionA.Set("hello", "world!")
+ sessionA.Save()
+ }
+
+ if sessionB.Get("hello") != "world?" {
+ sessionB.Set("hello", "world?")
+ sessionB.Save()
+ }
+
+ c.JSON(200, gin.H{
+ "a": sessionA.Get("hello"),
+ "b": sessionB.Get("hello"),
+ })
+ })
+ r.Run(":8000")
}
```
-## Backend examples
+## Backend Examples
### cookie-based
-[embedmd]:# (example/cookie/main.go go)
```go
package main
import (
- "github.com/gin-contrib/sessions"
- "github.com/gin-contrib/sessions/cookie"
- "github.com/gin-gonic/gin"
+ "github.com/gin-contrib/sessions"
+ "github.com/gin-contrib/sessions/cookie"
+ "github.com/gin-gonic/gin"
)
func main() {
- 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)
- var count int
- v := session.Get("count")
- if v == nil {
- count = 0
- } else {
- count = v.(int)
- count++
- }
- session.Set("count", count)
- session.Save()
- c.JSON(200, gin.H{"count": count})
- })
- r.Run(":8000")
+ 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)
+ var count int
+ v := session.Get("count")
+ if v == 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
-[embedmd]:# (example/redis/main.go go)
```go
package main
import (
- "github.com/gin-contrib/sessions"
- "github.com/gin-contrib/sessions/redis"
- "github.com/gin-gonic/gin"
+ "github.com/gin-contrib/sessions"
+ "github.com/gin-contrib/sessions/redis"
+ "github.com/gin-gonic/gin"
)
func main() {
- 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)
- var count int
- v := session.Get("count")
- if v == nil {
- count = 0
- } else {
- count = v.(int)
- count++
- }
- session.Set("count", count)
- session.Save()
- c.JSON(200, gin.H{"count": count})
- })
- r.Run(":8000")
+ 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)
+ var count int
+ v := session.Get("count")
+ if v == nil {
+ count = 0
+ } else {
+ count = v.(int)
+ count++
+ }
+ session.Set("count", count)
+ session.Save()
+ c.JSON(200, gin.H{"count": count})
+ })
+ r.Run(":8000")
}
```
@@ -178,134 +178,174 @@ func main() {
#### ASCII Protocol
-[embedmd]:# (example/memcached/ascii.go go)
```go
package main
import (
- "github.com/bradfitz/gomemcache/memcache"
- "github.com/gin-contrib/sessions"
- "github.com/gin-contrib/sessions/memcached"
- "github.com/gin-gonic/gin"
+ "github.com/bradfitz/gomemcache/memcache"
+ "github.com/gin-contrib/sessions"
+ "github.com/gin-contrib/sessions/memcached"
+ "github.com/gin-gonic/gin"
)
func main() {
- 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)
- var count int
- v := session.Get("count")
- if v == nil {
- count = 0
- } else {
- count = v.(int)
- count++
- }
- session.Set("count", count)
- session.Save()
- c.JSON(200, gin.H{"count": count})
- })
- r.Run(":8000")
+ 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)
+ var count int
+ v := session.Get("count")
+ if v == nil {
+ count = 0
+ } else {
+ count = v.(int)
+ count++
+ }
+ session.Set("count", count)
+ session.Save()
+ c.JSON(200, gin.H{"count": count})
+ })
+ r.Run(":8000")
}
```
#### Binary protocol (with optional SASL authentication)
-[embedmd]:# (example/memcached/binary.go go)
```go
package main
import (
- "github.com/gin-contrib/sessions"
- "github.com/gin-contrib/sessions/memcached"
- "github.com/gin-gonic/gin"
- "github.com/memcachier/mc"
+ "github.com/gin-contrib/sessions"
+ "github.com/gin-contrib/sessions/memcached"
+ "github.com/gin-gonic/gin"
+ "github.com/memcachier/mc"
)
func main() {
- r := gin.Default()
- client := mc.NewMC("localhost:11211", "username", "password")
- store := memcached.NewMemcacheStore(client, "", []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++
- }
- session.Set("count", count)
- session.Save()
- c.JSON(200, gin.H{"count": count})
- })
- r.Run(":8000")
+ r := gin.Default()
+ client := mc.NewMC("localhost:11211", "username", "password")
+ store := memcached.NewMemcacheStore(client, "", []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++
+ }
+ session.Set("count", count)
+ session.Save()
+ c.JSON(200, gin.H{"count": count})
+ })
+ r.Run(":8000")
}
```
### MongoDB
-[embedmd]:# (example/mongo/main.go go)
```go
package main
import (
- "github.com/gin-contrib/sessions"
- "github.com/gin-contrib/sessions/mongo"
- "github.com/gin-gonic/gin"
- "github.com/globalsign/mgo"
+ "github.com/gin-contrib/sessions"
+ "github.com/gin-contrib/sessions/mongo"
+ "github.com/gin-gonic/gin"
+ "github.com/globalsign/mgo"
)
func main() {
- r := gin.Default()
- session, err := mgo.Dial("localhost:27017/test")
- if err != nil {
- // handle err
- }
+ r := gin.Default()
+ session, err := mgo.Dial("localhost:27017/test")
+ if err != 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)
+ var count int
+ v := session.Get("count")
+ if v == nil {
+ count = 0
+ } else {
+ count = v.(int)
+ count++
+ }
+ session.Set("count", count)
+ session.Save()
+ c.JSON(200, gin.H{"count": count})
+ })
+ r.Run(":8000")
+}
+```
- c := session.DB("").C("sessions")
- store := mongo.NewStore(c, 3600, true, []byte("secret"))
- r.Use(sessions.Sessions("mysession", store))
+### memstore
- 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++
- }
- session.Set("count", count)
- session.Save()
- c.JSON(200, gin.H{"count": count})
- })
- r.Run(":8000")
+```go
+package main
+
+import (
+ "github.com/gin-contrib/sessions"
+ "github.com/gin-contrib/sessions/memstore"
+ "github.com/gin-gonic/gin"
+)
+
+func main() {
+ 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)
+ var count int
+ v := session.Get("count")
+ if v == 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
+### PostgreSQL
-[embedmd]:# (example/memstore/main.go go)
```go
package main
import (
+ "database/sql"
"github.com/gin-contrib/sessions"
- "github.com/gin-contrib/sessions/memstore"
+ "github.com/gin-contrib/sessions/postgres"
"github.com/gin-gonic/gin"
)
func main() {
r := gin.Default()
- store := memstore.NewStore([]byte("secret"))
+ db, err := sql.Open("postgres", "postgresql://username:password@localhost:5432/database")
+ if err != nil {
+ // handle err
+ }
+
+ store, err := postgres.NewStore(db, []byte("secret"))
+ if err != nil {
+ // handle err
+ }
+
r.Use(sessions.Sessions("mysession", store))
r.GET("/incr", func(c *gin.Context) {
@@ -325,5 +365,3 @@ func main() {
r.Run(":8000")
}
```
-
-