如何建设合法的网站,网站域名申请步骤,途牛网站建设的特点,家庭电脑可以做网站吗Gin中的Cookie和Session的用法 文章目录 Gin中的Cookie和Session的用法介绍Cookie代码演示 Session代码展示 介绍
cookie 和 session 是 Web 开发中常用的两种技术#xff0c;主要用于跟踪用户的状态信息。
Cookie func (c *Context) Cookie(name string, value string, max…Gin中的Cookie和Session的用法 文章目录 Gin中的Cookie和Session的用法介绍Cookie代码演示 Session代码展示 介绍
cookie 和 session 是 Web 开发中常用的两种技术主要用于跟踪用户的状态信息。
Cookie func (c *Context) Cookie(name string, value string, maxAge int, path string, domain string, secure bool, httpOnly bool) name:Cookie的名称 value:Cookie的值 maxAge:Cookie的最大生存时间,单位秒。如果为-1,则会产生一个会话Cookie,不设定过期时间。 path:Cookie路径,默认是’/’ domain:Cookie域名。默认空,代表当前访问的域名。 secure: 是否通过HTTPS传输Cookie httpOnly: 是否只能服务器修改,HTTP请求中不会显示在Cookie头中。 在 HTTP 协议中每个请求都是无状态的也就是说服务器无法知道当前的请求和之前的请求是来自同一个用户。Cookie 是一种在客户端存储用户数据的技术可以帮助服务器识别用户。 当用户第一次访问服务器时服务器可以生成一个唯一的 ID 并将其存储在一个 Cookie 中然后将这个 Cookie 发送给客户端。客户端在收到 Cookie 后会将其存储起来并在每次发送请求时都将这个 Cookie 附加到请求中。这样服务器就可以通过检查 Cookie 来识别用户。
代码演示
Gin中Cookie的方法只有两个 获取cookie: c.Cookie()设置cookie:c.SetCookie()
package mainimport (github.com/gin-gonic/ginnet/http
)func main() {r : gin.Default()//使用cookier.GET(/cookie, CookieHandle)r.Run()
}func CookieHandle(c *gin.Context) {userID : userID//获取指定的cookiecookie, err : c.Cookie(userID)//没有就创建cookieif err ! nil {c.SetCookie(userID, 0, 60*60, /, , true, false)}//获取成功就打印cookiec.JSON(http.StatusOK, gin.H{status: cookie,})
}Session Go语言中的gin想要用Session需要引入第三方库 拉取:go get github.com/gin-contrib/sessions导包:import github.com/gin-contrib/sessions具体详情:https://github.com/gin-contrib/sessions 虽然 Cookie 可以用来识别用户但是它并不能存储大量的用户数据。这是因为 Cookie 的大小有限制而且每个 Cookie 都会在每次请求时发送给服务器如果 Cookie 太大会导致网络延迟。 Session 是另一种用于存储用户数据的技术。与 Cookie 不同Session 数据存储在服务器端。当用户第一次访问服务器时服务器会创建一个新的 Session并生成一个与之关联的唯一 ID。这个 ID 会被存储在一个 Cookie 中并发送给客户端。这样当客户端再次发送请求时服务器就可以通过 Session ID 来查找对应的 Session 数据。
代码展示
package mainimport (github.com/gin-contrib/sessionsgithub.com/gin-contrib/sessions/cookiegithub.com/gin-gonic/gin
)func main() {r : gin.Default()store : cookie.NewStore([]byte(secret))r.Use(sessions.Sessions(mysession, store))r.GET(/hello, func(c *gin.Context) {session : sessions.Default(c)if session.Get(hello) ! world {session.Set(hello, world)session.Save()}c.JSON(200, gin.H{hello: session.Get(hello)})})r.Run(:8000)
}