Go语言中的gin框架 Cookie和Session 操作手册 (十)

文章介绍了在GinWeb框架中如何设置和删除Cookie,以及利用gin-contrib/sessions包管理Session。通过示例代码展示了设置Cookie的参数,包括名称、值、过期时间等,并解释了如何通过设置过期时间为负值来删除Cookie。此外,还提到了Session的使用,包括引入第三方cookieStore中间件和在不同路由控制器中使用Session的示例。

在Gin框架中,使用ctx.SetCookie()方法来设置Cookie。下面是一个具体的实现示例:

func setCookie(c *gin.Context) {
    // 设置Cookie的参数和值
    c.SetCookie("my_cookie", "example value", 3600, "/", "localhost", false, true)
    
    // 其他逻辑
}

在这个例子中,我们使用c.SetCookie()方法来设置Cookie。方法接收的参数如下:

  • 第一个参数是Cookie的名称。
  • 第二个参数是Cookie的值。
  • 第三个参数是Cookie的过期时间(以秒为单位)。在这个例子中,设置Cookie的过期时间为3600秒(即1小时)。
  • 第四个参数是Cookie的路径,指定Cookie可用的路径。在这个例子中,我们将其设置为根路径 “/”。
  • 第五个参数是Cookie的域,指定Cookie可用的域名。在这个例子中,我们将其设置为 “localhost”,表示只能在本地测试环境使用。
  • 第六个参数是一个布尔值,指示是否使用HTTPS发送Cookie。在这个例子中,我们将其设置为false。
  • 第七个参数是一个布尔值,指示是否启用SameSite属性。在这个例子中,我们将其设置为true。

通过这样设置,即可在响应中将Cookie发送给客户端,客户端会自动存储并在后续的请求中发送回服务器。

视图(view template) 

在控制器中 设置 Cookie 值;


func (con AdminControllers) Views(c *gin.Context) {

	c.SetCookie("username", "王二妹", 3600, "/", "localhost", false, true)

	c.HTML(http.StatusOK, "admin/views/index.html", gin.H{
		"title": "views页面",
	})
}

过期时间后cookie 是否存在? 

答案: 当一个 Cookie 的过期时间到达后,浏览器将不再发送该 Cookie 到服务器。换句话说,该 Cookie 在浏览器中被认为是过期的,不再被浏览器传输。

尽管浏览器不再发送过期的 Cookie,但该 Cookie 可能仍然存在于客户端的 Cookie 存储中。不同的浏览器有不同的行为,有些浏览器会在过期后立即删除该 Cookie,而有些浏览器会保留该过期 Cookie 直到清除浏览器缓存或者用户主动删除它。

在服务器端的代码中,你无法直接检查客户端的 Cookie 存储。服务器只会接收到浏览器发送的有效 Cookie(即未过期的 Cookie)。

因此,即使过期时间已

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

匠造一知识

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值