Gin - Session
2021/9/30 23:13:51
本文主要是介绍Gin - Session,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1. gorilla/sessions
- start:2k+,fork:200+
1.1 安装
go get github.com/gorilla/sessions
1.2 使用
1.2.1 导包
import ( "github.com/gorilla/sessions" )
1.2.2 实例化存储引擎
- cookie - 基于 cookie
// session-key: 只有自己知道的加密密钥 store := sessions.NewCookieStore([]byte("session-key"))
- file - 基于文件系统
// path: session 文件存储位置(文件夹),若 path == "",则会使用 os.TempDir() store := sessions.NewFilesystemStore(path, []byte("session-key"))
1.2.3 创建 session 对象
func demo(ctx *gin.Context) { ... // 虽然 session-name 相同,但是不同客户端会得到不同的 session session, err := store.New(ctx.Request, "session-name") ... }
1.2.4 获取 session 对象
func demo(ctx *gin.Context) { ... // 如果不存在,会自动创建一个 session 对象 session, err := store.Get(ctx.Request, "session-name") ... }
1.2.5 管理 session 对象
- session 中存储的对象以键值对的形式存储在 Values 属性中
- Values 的类型为:map[interface{}]interface{}。
func demo(ctx *gin.Context) { ... // 读取 Values 属性中存储的值 test := session.Values["test"] fmt.Println(test) ... // 修改 Values session.Values["test"] = "test" // 有则修改,无则存入 session.Save(ctx.Request, ctx.Writer) // 必须调用 Save() 方法,对 Values 的修改才会生效 ... // 删除 session 对象,MaxAge < 0 即为删除 session.Options.MaxAge = -1 session.Save(ctx.Request, ctx.Writer) ... }
2. gin-contrib/sessions
- start:800+,fork:100+
2.1 安装
go get github.com/gorilla/sessions
2.2 使用
2.2.1 导包
import ( // 导入 session 包 "github.com/gin-contrib/sessions" // 导入 session 存储引擎 "github.com/gin-contrib/sessions/cookie" // cookie memstore redis memcached mongodb )
2.2.2 实例化存储引擎
- cookie
// 基于 gorilla 的 CookieStore store := cookie.NewStore([]byte("secret"))
- memstore
store := memstore.NewStore([]byte("secret"))
- redis
store := redis.NewStore( 10, // size: 最大空闲连接数 "tcp", // network: tcp | udp "localhost:6379", // address: host:port "", // password: redis-password []byte("secret"), // keyPairs: 只有自己知道的加密密钥 )
2.2.3 设置 session 中间件
g := gin.Default() // 虽然 session-name 相同,但是不同客户端会得到不同的 session g.Use(sessions.Sessions("session-name", store))
2.2.4 获取 session 对象
session := sessions.Default(ctx) // ctx *gin.Context
2.2.5 管理 session 对象
// 读取 session 中存储的值 session.Get("test") // 修改/新增 session 中存储的值 session.Set("test", "gin-contrib test") session.Save() // 对 session 中的值进行【增/删/改】都需要调用 Save() 方法保存更改 // 删除 session 中存储的值 session.Delete("test") session.Save() // 删除整个 session 对象 session.Clear()
这篇关于Gin - Session的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南