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
相关推荐
未来魔导4 小时前
Gin版本的路由总结
开发语言·llm·gin·路由
未来魔导7 小时前
基于 Gin 框架的 大型 Web 项目推荐架构目录结
前端·架构·gin
kgduu2 天前
Gin源码解析
算法·gin
ZNineSun2 天前
Go的Http框架:gin
http·golang·gin
古城小栈7 天前
Gin 实现 大文件 分片上传 与 断点续传
go·gin
古城小栈8 天前
为Gin应用添加 一双眼睛:Prometheus
prometheus·gin
风生u9 天前
Go: Gin的用法
golang·xcode·gin
古城小栈11 天前
Golang Gin+Gorm :SQL注入 防护
sql·安全·go·gin
路边草随风12 天前
go实现接口接收数据写入kafka
golang·kafka·gin
b***653214 天前
Go-Gin Web 框架完整教程
前端·golang·gin