1
0
mirror of https://github.com/schollz/cowyo.git synced 2023-08-10 21:13:00 +03:00
cowyo/vendor/github.com/gin-contrib/sessions
2017-10-03 14:43:55 -04:00
..
example_cookie Vendoring 2017-10-03 14:43:55 -04:00
example_memcached Vendoring 2017-10-03 14:43:55 -04:00
example_mongo Vendoring 2017-10-03 14:43:55 -04:00
example_redis Vendoring 2017-10-03 14:43:55 -04:00
.gitignore Vendoring 2017-10-03 14:43:55 -04:00
.travis.yml Vendoring 2017-10-03 14:43:55 -04:00
cookie_test.go Vendoring 2017-10-03 14:43:55 -04:00
cookie.go Vendoring 2017-10-03 14:43:55 -04:00
LICENSE Vendoring 2017-10-03 14:43:55 -04:00
memcached_test.go Vendoring 2017-10-03 14:43:55 -04:00
memcached.go Vendoring 2017-10-03 14:43:55 -04:00
mongo_test.go Vendoring 2017-10-03 14:43:55 -04:00
mongo.go Vendoring 2017-10-03 14:43:55 -04:00
README.md Vendoring 2017-10-03 14:43:55 -04:00
redis_test.go Vendoring 2017-10-03 14:43:55 -04:00
redis.go Vendoring 2017-10-03 14:43:55 -04:00
sessions_test.go Vendoring 2017-10-03 14:43:55 -04:00
sessions.go Vendoring 2017-10-03 14:43:55 -04:00

sessions

Build Status codecov Go Report Card GoDoc Join the chat at https://gitter.im/gin-gonic/gin

Gin middleware for session management with multi-backend support (currently cookie, Redis, Memcached, MongoDB).

Usage

Start using it

Download and install it:

$ go get github.com/gin-contrib/sessions

Import it in your code:

import "github.com/gin-contrib/sessions"

Examples

package main

import (
	"github.com/gin-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++
		}
		session.Set("count", count)
		session.Save()
		c.JSON(200, gin.H{"count": count})
	})
	r.Run(":8000")
}

Redis

package main

import (
	"github.com/gin-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("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")
}

Memcached

package main

import (
	"github.com/bradfitz/gomemcache/memcache"
	"github.com/gin-contrib/sessions"
	"github.com/gin-gonic/gin"
)

func main() {
	r := gin.Default()
	store := sessions.NewMemcacheStore(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")
}

MongoDB

package main

import (
	"github.com/gin-contrib/sessions"
	"github.com/gin-gonic/gin"
	"gopkg.in/mgo.v2"
)

func main() {
	r := gin.Default()
	session, err := mgo.Dial("localhost:27017/test")
	if err != nil {
		// handle err
	}

	c := session.DB("").C("sessions")
	store := sessions.NewMongoStore(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")
}