Golang Gin Session & Cookie
一. Cookie
1 func (con UserControl) Index(c *gin.Context) { 2 /*** 设置Cookie 3 func (c *Context) SetCookie(name, value string, maxAge int, path, domain string, secure, httpOnly bool) { 4 参数: 5 1. name key 6 2. value value 7 3. maxAge 过期时间(秒).如果只是想设置Cookie的保存路进而不详设置存活时间,可以在直接传nil,-1就是删除Cookie. 8 4. path Cookie的路径. "/"表示当前域都可以访问 9 5. domain Cookie路径Domain作用域.本地配制成localhost,正式上限配制成域名 10 6. secure 当为true时,cookie在http中是无效的,在https才有效 11 7. httpOnly 是微软堆cookie做的拓展. 如果在cookie中设置了true,则通过程序(JS脚本\applet等)将无法读取道Cookie信息,防止XSS攻击 12 ***/ 13 c.SetCookie("username", "zhangsan", 3600, "/", "localhost", false, false) 14 // 获取cookie 15 username, _ := c.Cookie("username") 16 fmt.Println(username) 17 c.String(http.StatusOK, "用户列表-首页") 18 }
二. Session
1 # Session 库: https://github.com/gin-contrib/sessions 2 # 安装: go get github.com/gin-contrib/sessions 3 4 package main 5 6 import ( 7 "github.com/gin-contrib/sessions" 8 "github.com/gin-contrib/sessions/cookie" 9 "github.com/gin-gonic/gin" 10 ) 11 12 func main() { 13 r := gin.Default() 14 store := cookie.NewStore([]byte("secret")) 15 r.Use(sessions.Sessions("mysession", store)) 16 17 r.GET("/incr", func(c *gin.Context) { 18 session := sessions.Default(c) 19 var count int 20 v := session.Get("count") 21 if v == nil { 22 count = 0 23 } else { 24 count = v.(int) 25 count++ 26 } 27 session.Set("count", count) 28 // 可以保存在:内存/Redis/MongoDB/PostgreSQL 具体需要在初始化中间件的时候设置. 29 session.Save() 30 c.JSON(200, gin.H{"count": count}) 31 }) 32 r.Run(":8000") 33 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?