





Gin Session
与 cookie 一样,session 也是在 http 无状态协议的基础上实现的一种对用户状态管理技术,它与 cookie 的区别在于,session 是记录在服务端的,而 cookie 是记录在客户端的。
■ ■■■■
gin-contrib/sessions 中间件支持的存储引擎有几种:cookie、memstore、redis、memcached、Mongodb。
可以使用命令安装session包:
go get github.com/gin-contrib/sessions
■ ■■■■
package mainimport ("github.com/gin-contrib/sessions""github.com/gin-contrib/sessions/cookie""github.com/gin-gonic/gin")func main() {r := gin.Default()// 创建基于cookie的存储引擎,this is a secret!!!用于加密的密钥store := cookie.NewStore([]byte("this is a secret!!!"))r.Use(sessions.Sessions("_session", store))r.GET("/test_session", func(c *gin.Context) {// 初始化session对象session := sessions.Default(c)// 通过session.Get 获取session值// session 是键值对格式数据,因此需要通过 key 查询数据if session.Get("name") != "zhangsan" {// 设置 session 数据session.Set("name", "zhangsan")// 保存 session数据session.Save()}c.JSON(200, gin.H{"name": session.Get("name"),})})r.Run()}
现在运行上述代码后,测试结果如下图:


另外,您能够通过session.Delete(key)删除session数据,使用session.Clear(),删除整个session数据。这里不做演示。

■ ■■■■

总结
本文主要介绍了什么是session,并简单说明了它的工作原理,另外在Gin中是如何去操作session,并演示了一个操作session的小demo。
后续,我将继续为您介绍Gin的一些其他教程,敬请期待~~。

长按二维码关注我们吧
不要错过


文章转载自一起Go技术,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




