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