Gin框架之Session的使用(详解)

前言

本文主要介绍 go开源框架gin 是如何使用session的。以及前端 vue3 + axios@0.27 是如何配合session一起使用的

主要介绍内容包括这些:

  1. session的基本原理
  2. gin配置session
  3. axios 如何设置携带cookie (chrome版本 < 80)
  4. axios 如何在跨域请求时携带cookie(chrome版本 < 80)
  5. chrome浏览器版本 >= 80 时,axios 不携带cookie的解决方案
  6. session的一些基本配置操作
  7. session的Flashes讲解

正文

session的基本原理

http协议是无状态的,就是说你在请求服务器同时,张三也在请求服务器,这时候服务器是不知道哪个请求是你,哪个请求张三(除非你们携带了一些识别字段,不过这属于业务层内容,不在讨论范围,我们单说http协议)。

为了让服务器知道哪个请求时你的,哪个是张三的。这时候就有了session。

session和cookie是不分家的。我们每次说到session,其实默认就是要使用cookie了。

我们举例说明一下什么是session:

你要去逛澡堂,刚进门来到服务台时你是没有开储物柜的钥匙的。当你交钱了,服务台就给你一把储物柜的钥匙,这时储物柜就和你的钥匙绑定了。你去游泳、搓澡,你一直会把钥匙带在身上。这时候你不管什么时候去服务台,只要你拿着钥匙,就会认识你,你拿着钥匙可以随便的到储物柜中拿取自己的东西。你要离开时,把钥匙柜服务台就可以了。

在程序里是怎么实现上面的过程的呢?
服务器就是服务台,储物柜就是session仓库,钥匙就是我们的凭证。携带钥匙其实就是cookie传输。

第一次登录,服务器给客户端颁发一个唯一的sessionId, 并通过http的响应头返回。客户端(浏览器)发现返回的数据中有cookie数据就把这个cookie数据存放到内存。下次再发送http请求时,把内存中的cookie数据再塞到http请求头中,一并发给服务器,服务器在解析请求时,发现请求头中有cookie,就开始识别cookie中的sessionId,拿到sessionId,我们就知道这个请求时由哪个客户端发送来的了。

gin配置session

gin框架在处理session时有专门的中间件,我们可以直接使用。

中间件: github.com/gin-contrib/sessions , 我们直接安装依赖: go get github.com/gin-contrib/sessions

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值