当前位置: 首页 > news >正文

Gin中用于追踪用户的状态的方法?!!!

Gin中的Cookie和Session的用法

文章目录

  • Gin中的Cookie和Session的用法
    • 介绍
      • Cookie
        • 代码演示
      • Session
        • 代码展示

介绍

  • cookiesession 是 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/gin""net/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/sessions""github.com/gin-contrib/sessions/cookie""github.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")
}

相关文章:

Gin中用于追踪用户的状态的方法?!!!

Gin中的Cookie和Session的用法 文章目录 Gin中的Cookie和Session的用法介绍Cookie代码演示 Session代码展示 介绍 cookie 和 session 是 Web 开发中常用的两种技术,主要用于跟踪用户的状态信息。 Cookie func (c *Context) Cookie(name string, value string, max…...

HTTP代理与HTTPS代理在工作流程上有哪些区别

HTTP代理和HTTPS代理都是常见的代理技术,可以实现隐藏客户端IP地址、突破网络封锁、加速网站访问、过滤网络内容等功能。本文将介绍HTTP代理和HTTPS代理在工作流程上的区别。 HTTP代理的工作流程 客户端向代理服务器发送HTTP请求 当客户端需要访问某个网站时&#x…...

Docker从认识到实践再到底层原理(二-2)|Namespace+cgroups

前言 那么这里博主先安利一些干货满满的专栏了! 首先是博主的高质量博客的汇总,这个专栏里面的博客,都是博主最最用心写的一部分,干货满满,希望对大家有帮助。 高质量博客汇总 然后就是博主最近最花时间的一个专栏…...

算法的概述

算法分析: 解决同一问题的算法可以有多种。 我们希望从中选出最优的算法,效率高或者存储空间小。为此,需要对算法进行评估,分析。 通常考虑两个度量: 1、 时间复杂度:算法运行时需要的总步数&#xff0c…...

菜鸟教程《Python 3 教程》笔记(19):错误与异常

菜鸟教程《Python 3 教程》笔记(19) 19 错误和异常19.1 assert(断言)19.2 异常处理19.2.1 try/except19.2.2 try/except...else19.2.3 try-finally 语句 19.3 抛出异常19.4 用户自定义异常19.5 清理行为19.5.1 定义清理行为19.5.2…...

空气净化器上亚马逊美国站需要办理什么认证?空气净化器UL867测试报告如何办理?

空气净化器又称“空气清洁器”、空气清新机、净化器,是指能够吸附、分解或转化各种空气污染物(一般包括PM2.5、粉尘、花粉、异味、甲醛之类的装修污染、细菌、过敏原等),有效提高空气清洁度的产品,主要分为家用 、商用…...

SpringBoot的测试方案

写完代码后,测试是必不可少的步骤,现在来介绍一下基于SpringBoot的测试方法。 基于SpringBoot框架写完相应功能的Controller之后,然后就可以测试功能是否正常,本博客列举MockMvc和RestTemplate两种方式来测试。 准备代码 实体类…...

华为OD机考算法题:字符串解密

目录 题目部分 解读与分析 代码实现 题目部分 题目字符串解密题目说明给定两个字符串string1和string2。 string1是一个被加扰的字符串。string1由小写英文字母(a~z)和数字字符(0~9)组成,而加扰字符串由0~9、a~f 组…...

unity 锚点设置

锚点聚合情况: 一个2d物体的位置 pos x pos y 是中心点相对于锚点的偏移量: 中心点就是位置。 按住shift 锚点和中心点都会被设置: 按住Alt: 同时按住shift和alt : 中心点 锚点 UI元素在对应的位置上。 锚点拉伸情况…...

Hadoop:HDFS--分布式文件存储系统

目录 HDFS的基础架构 VMware虚拟机部署HDFS集群 HDFS集群启停命令 HDFS Shell操作 hadoop 命令体系: 创建文件夹 -mkdir 查看目录内容 -ls 上传文件到hdfs -put 查看HDFS文件内容 -cat 下载HDFS文件 -get 复制HDFS文件 -cp 追加数据到HDFS文件中 -appendTo…...

自定义封装异步任务组件,实现FutureTask功能

FutureTask 在 JDK1.8 后的异步编排API中的CompletableFuture&#xff0c;提供了 异步任务的成功回调、异常回调。 public class FutureTaskTest {public static void main(String[] args) throws Exception {CompletableFuture<String> future CompletableFuture.sup…...

【区块链 | IPFS】IPFS节点搭建、文件上传、节点存储空间设置、节点上传文件chunk设置

一、创建ipfs节点 通过ipfs init在本地计算机建立一个IPFS节点 本文有些命令已经执行过了&#xff0c;就没有重新初始化。部分图片拷贝自先前文档&#xff0c;具体信息应以实物为准 ipfs init initializing IPFS node at /Users/CHY/.ipfs generating 2048-bit RSA keypair.…...

【autodesk】浏览器中渲染rvt模型

使用Forge完成渲染 Forge是什么 为什么能够渲染出来rvt模型 Forge是由Autodesk开发的一套云端开发平台和工具集。在Forge平台中&#xff0c;有一个名为"Model Derivative"的服务&#xff0c;它可以将包括RVT&#xff08;Revit&#xff09;在内的多种BIM&#xff08…...

Python超入门(1)__迅速上手操作掌握Python

# 1.第一个代码&#xff1a;输出语句 # 1.第一个代码&#xff1a;输出语句 print("My dogs name is Huppy!") print(o----) print( ||| ) print("*" * 10) """ 输出结果&#xff1a; My dogs name is Huppy! o----||| ********** "&…...

后端面试话术集锦第 十四 篇:go语言面试话术

这是后端面试集锦第十四篇博文——go语言面试话术❗❗❗ 1. go数组、切片、扩容 go的数组和切片都是用来存储相同类型的数据集合。 数组是存储固定大小的集合,且为值引用。 但切片是存储无固定大小的集合,且为引用类型。 切片有三个属性,分别为指向指针的数组array,数组…...

Oralce集群管理-19C RAC 私有网络调整为BOND1

1 尝试在线添加私有网络的新接口 是否成功。 使用oifcfg命令在线添加新的网卡接口&#xff0c;在还没有配置bond1的条件下 也是可以添加成功的。 [gridorcldb1 ~]$ oifcfg getif eno3 192.168.224.0 global public ens3f0 10.2.0.0 global cluster_interconnect,asm eno…...

洛谷 Array 数论

题目&#xff1a; 对于长度为n的数组A&#xff0c;A中只包含从1到n的整数&#xff08;可重复&#xff09;。如果A单调不上升或单调不下降&#xff0c;A就可称为美丽的。 找出在长度为n时&#xff0c;有几个美丽的A。 思路&#xff1a; 这是一道数论题。 我们先找找“单调不递…...

简明SQL条件查询指南:掌握WHERE实现数据筛选

条件查询是用于从数据库中根据特定条件筛选数据行的一种方式&#xff0c;它避免了检索整个表中的数据。通常&#xff0c;使用 WHERE 子句来定义过滤条件&#xff0c;只有符合这些条件的数据行才会被返回。 SQL中的运算符有&#xff1a;、!、<、> 等&#xff0c;用于进行…...

通过HbaseClient来写Phoenix表实现

由于数据存储在Hbase上&#xff0c;并且上层使用了Phoenix来读写数据。并且由于数据的列字段不固定&#xff0c;并且可能由于Hbase表列和Phoenix的表列字段不一致&#xff0c;使用Phoenix写入的数据会导致写出报错的问题出现。所以这里直接使用HbaseClient写入到Hbase表中&…...

uniapp qiun charts H5使用echarts的eopts配置不生效

原因是&#xff1a;使用web的要设置 echartsH5 :echartsH5"true" <template><view class"charts-box"><view class"chart-title"> 趋势</view><qiun-data-chartstype"column":eopts"eopts":cha…...

AI Agent客服已过概念期——2024Q2行业渗透率突增至41.6%,但仅7.3%企业实现L3级自主决策闭环(附自评诊断表)

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;AI Agent客服已过概念期——2024Q2行业渗透率突增至41.6%&#xff0c;但仅7.3%企业实现L3级自主决策闭环&#xff08;附自评诊断表&#xff09; AI Agent客服正经历从技术验证到规模化落地的关键跃迁。据IDC联…...

终极指南:如何用calendar.js轻松实现农历公历智能转换

终极指南&#xff1a;如何用calendar.js轻松实现农历公历智能转换 【免费下载链接】calendar.js 中国农历&#xff08;阴阳历&#xff09;和西元阳历即公历互转JavaScript库 项目地址: https://gitcode.com/gh_mirrors/ca/calendar.js 想要在你的Web应用中添加中国传统文…...

STM32F103C8T6+TJA1042+UTA0403:一个CAN通讯新手踩过的所有坑(附完整接线图与代码)

STM32F103C8T6与TJA1042的CAN通讯实战&#xff1a;从零到通的完整避坑指南 当蓝色PCB上那颗STM32F103C8T6第一次通过CAN总线发出数据帧时&#xff0c;我的示波器上终于出现了规整的差分信号波形——这距离我首次焊接CAN收发器已经过去了整整三周。作为嵌入式开发的新手&#xf…...

VideoDownloadHelper:免费视频下载插件终极使用指南

VideoDownloadHelper&#xff1a;免费视频下载插件终极使用指南 【免费下载链接】VideoDownloadHelper Chrome Extension to Help Download Video for Some Video Sites. 项目地址: https://gitcode.com/gh_mirrors/vi/VideoDownloadHelper 你是否经常遇到想要保存网页视…...

OpenCore Legacy Patcher终极指南:三步让老Mac焕发新生,轻松运行最新macOS

OpenCore Legacy Patcher终极指南&#xff1a;三步让老Mac焕发新生&#xff0c;轻松运行最新macOS 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 还在为老旧…...

如何快速掌握UABEA:新手必备的Unity资源编辑完整指南

如何快速掌握UABEA&#xff1a;新手必备的Unity资源编辑完整指南 【免费下载链接】UABEA c# uabe for newer versions of unity 项目地址: https://gitcode.com/gh_mirrors/ua/UABEA 你是否曾经想要修改自己喜欢的Unity游戏&#xff0c;却因为复杂的资源格式而束手无策&…...

让中国开源的声音被全球听见——开源社诚邀您参与Linux基金会开源商业化调研

大家好&#xff01;近期&#xff0c;我们收到了Linux基金会的联系。一直以来&#xff0c;Linux基金会作为全球开源生态的核心推动者&#xff0c;持续通过专业的调研与权威报告&#xff0c;为全球开源的发展指明方向。根据其2026年最新研究&#xff0c;企业积极贡献开源可获得平…...

Q-Learning原理与工程实践:从试错记账到智能决策

1. 这不是数学课&#xff0c;是教你怎么让机器“试错成长”——Q-Learning到底在干啥&#xff1f;你有没有带过小孩学骑自行车&#xff1f;一开始扶着后座&#xff0c;他歪歪扭扭往前冲&#xff0c;撞到草坪、蹭到墙边、甚至直接摔进灌木丛——但每次摔倒后&#xff0c;他都会下…...

告别格式转换烦恼:用Blender3mfFormat插件打通3D打印最后一公里

告别格式转换烦恼&#xff1a;用Blender3mfFormat插件打通3D打印最后一公里 【免费下载链接】Blender3mfFormat Blender add-on to import/export 3MF files 项目地址: https://gitcode.com/gh_mirrors/bl/Blender3mfFormat 你是否曾在Blender中精心设计了色彩斑斓的3D模…...

OpenClaw入门教程:从零部署到第一个智能体

OpenClaw OpenClaw&#xff08;原 Moltbot&#xff09;是一个开源的 AI 智能体&#xff08;Agent&#xff09;框架&#xff0c;旨在通过连接大语言模型&#xff08;LLM&#xff09;与外部工具&#xff08;如浏览器、API、办公软件&#xff09;&#xff0c;实现自动化任务执行。…...