基本介绍

接口文档:https://godoc.org/github.com/gogf/gf/os/gsession

任何时候都可以通过ghttp.Request获取Session对象,因为CookieSession都是和请求会话相关,因此都属于Request的成员对象,并对外公开。GF框架的Session默认过期时间是24小时

Session的操作是支持并发安全的,这也是框架在对Session的设计上不采用直接以map的形式操作数据的原因。在HTTP请求流程中,我们可以通过ghttp.Request对象来获取Session对象,并执行相应的数据操作。

ghttp.Server中的SessionId使用的是客户端的 RemoteAddr + Header 请求信息通过guid模块来生成的,保证随机及唯一性:

gsession模块

gsession模块中有比较重要的三个对象/接口:

  1. gsession.Session:单个Session会话管理对象,用于Session参数的增删查改等数据管理操作。
  2. gsession.Storage:这是一个接口定义,用于Session对象的持久化存储、数据写入/读取、存活更新等操作,开发者可基于该接口实现自定义的持久化存储特性。 该接口定义详见:

存储实现方式

gsession实现并为开发者提供了常见的三种Session存储实现方式:

  1. 基于纯内存存储:性能最高效,但是无法持久化保存,重启即丢失;
  2. 基于Redis存储:远程Redis节点存储Session数据,支持应用多节点部署;