go redis v8 gin session

今天使用到gin的模版功能,于是学习了一下登录session

因为gin有自家开发好的 session redis。所以在redis支持方面。已经有支持好的了

但是看了一下golang redis方面,发现有个 redis v8 里的人气比官方的人气更多。更新比较及时。

于是觉得还是整体使用v8的好些。

下面是一些整合方向的技术点:

新建一个redisv8的store,然后参考官方的redistore。增加对应的方法。因为官方的是继承 sessions.Store,所以要实现接口的一些方法

type store struct {
	*RediStoreV8
}

func (c *store) Options(options ginSession.Options) {
	c.RediStoreV8.Options = options.ToGorillaOptions()
}

type RediStoreV8 struct {
	Rdb           *redis.Client
	Codecs        []securecookie.Codec
	Options       *sessions.Options // default configuration
	DefaultMaxAge int               // default Redis TTL for a MaxAge == 0 session
	maxLength     int
	keyPrefix     string
	serializer    SessionSerializer
}

  基本上要注意的是,redis查询时,需要到ctx,这个ctx context.Context。注意要使用同一个变量。可以整成一个全局变量.然后其它的按照官方redisstore的使用方式就很好集成在一起了

注意这里有两个session 一个是github.com/gorilla/sessions 一个是github.com/gin-contrib/sessions

posted @ 2022-11-30 20:33  你好啊,再见了  阅读(467)  评论(0编辑  收藏  举报