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
相关推荐
爬也要爬着前进1 天前
第十四章 gin基础
gin
Code季风1 天前
从内存机制到代码实现:深拷贝与浅拷贝深度解析
性能优化·go·gin
一条闲鱼_mytube2 天前
gin go-kratos go-zero框架对比
开发语言·golang·gin
C墨羽4 天前
使用Gin框架构建高并发教练预约微服务:架构设计与实战解析
微服务·架构·golang·gin
痴人说梦梦中人5 天前
Gin框架统一响应与中间件机制学习笔记
网络安全·中间件·go·gin
Go Dgg6 天前
【Go + Gin 实现「双 Token」管理员登录】
开发语言·golang·gin
Jerry Lau10 天前
go go go 出发咯 - go web开发入门系列(二) Gin 框架实战指南
前端·golang·gin
Code季风10 天前
微服务分布式配置中心:Gin Web 服务层与 gRPC 服务层集成 Nacos 实战
分布式·微服务·rpc·架构·go·gin·consul
Code季风11 天前
Gin Web 层集成 Viper 配置文件和 Zap 日志文件指南(下)
前端·微服务·架构·go·gin
Code季风11 天前
Gin Web 服务集成 Consul:从服务注册到服务发现实践指南(下)
java·前端·微服务·架构·go·gin·consul