zdpgo_gin_sessions 专为zdpgo_gin打造的session框架,当需要使用session存储数据的时候可以考虑使用此框架

zdpgo_gin_sessions

专为zdpgo_gin打造的session框架,当需要使用session存储数据的时候可以考虑使用此框架

安装

bash 复制代码

使用教程

go 复制代码
package main

import (
	gin "github.com/zhangdapeng520/zdpgo_gin"
	sessions "github.com/zhangdapeng520/zdpgo_gin_sessions"
	"github.com/zhangdapeng520/zdpgo_gin_sessions/cookie"
)

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")
}

memory store

go 复制代码
package main

import (
	gin "github.com/zhangdapeng520/zdpgo_gin"
	sessions "github.com/zhangdapeng520/zdpgo_gin_sessions"
	"github.com/zhangdapeng520/zdpgo_gin_sessions/memstore"
)

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")
}

memory cache ascii

go 复制代码
package main

import (
	gin "github.com/zhangdapeng520/zdpgo_gin"
	sessions "github.com/zhangdapeng520/zdpgo_gin_sessions"
	"github.com/zhangdapeng520/zdpgo_gin_sessions/memcached"
	"github.com/zhangdapeng520/zdpgo_gin_sessions/memcached/memcache"
)

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")
}

memory cache binary

go 复制代码
package main

import (
	gin "github.com/zhangdapeng520/zdpgo_gin"
	sessions "github.com/zhangdapeng520/zdpgo_gin_sessions"
	"github.com/zhangdapeng520/zdpgo_gin_sessions/memcached"
	"github.com/zhangdapeng520/zdpgo_gin_sessions/memcached/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")
}

redis

go 复制代码
package main

import (
	gin "github.com/zhangdapeng520/zdpgo_gin"
	sessions "github.com/zhangdapeng520/zdpgo_gin_sessions"
	"github.com/zhangdapeng520/zdpgo_gin_sessions/redis"
)

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")
}

gorm mysql

go 复制代码
package main

import (
	gin "github.com/zhangdapeng520/zdpgo_gin"
	gorm "github.com/zhangdapeng520/zdpgo_gorm"
	"github.com/zhangdapeng520/zdpgo_gorm/mysql"
	sessions "github.com/zhangdapeng520/zdpgo_gin_sessions"
	gormsessions "github.com/zhangdapeng520/zdpgo_gin_sessions/gorm"
)

func main() {
	db, err := gorm.Open(mysql.Open("root:root@tcp(127.0.0.1:3306)/test?charset=utf8&parseTime=True&loc=Local"), &gorm.Config{})
	if err != nil {
		panic(err)
	}
	store := gormsessions.NewStore(db, true, []byte("secret"))

	r := gin.Default()
	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")
}

版本历史

v0.1.0

  • 支持常用的session

v0.1.1

  • 包名从zdpgo_sessions改为zdpgo_gin_sessions
相关推荐
zhuyasen4 天前
Go 实战:在 Gin 基础上上构建一个生产级的动态反向代理
nginx·go·gin
q***78375 天前
【Golang】——Gin 框架中间件详解:从基础到实战
中间件·golang·gin
嘿嘿6 天前
使用 Gin 框架加载 HTML 模板:`LoadHTMLGlob` 和 `LoadHTMLFiles` 的比较与优化
后端·go·gin
q***71087 天前
【Golang】——Gin 框架中的表单处理与数据绑定
microsoft·golang·gin
天然玩家7 天前
【技术选型】Go后台框架选型
golang·gin·echo·fiber·fasthttp
q***75608 天前
【Golang】——Gin 框架中间件详解:从基础到实战
中间件·golang·gin
月屯12 天前
平台消息推送(go)
数据库·后端·golang·cocoa·iphone·gin
百***416613 天前
Go-Gin Web 框架完整教程
前端·golang·gin
风无雨13 天前
gin学习
学习·gin
疯狂的程需猿13 天前
企业级的Gin模板项目
gin