Gin中session和cookies
Gin中session和cookies
session
什么是session
- Session是在无状态的HTTP协议下,服务端记录用户状态时用于标识具体用户的机制
- 它是在服务端保存的用来跟踪用户的状态的数据结构,可以保存在文件、数据库或者集群中
- 在浏览器关闭后这次的Session就消失了,下次打开就不再拥有这个Session。其实并不是Session消失了,而是Session ID变了
cookie
什么是cookie?
- Cookie是客户端保存用户信息的一种机制,用来记录用户的一些信息
- 每次HTTP请求时,客户端都会发送相应的Cookie信息到服务端。它的过期时间可以任意设置,如果你不主动清除它,保留
二者对比
- Cookie 在客户端(浏览器),Session 在服务器端
- Cookie的安全性一般,他人可通过分析存放在本地的Cookie并进行Cookie欺骗。在安全性第一的前提下,选择Session更优。重要交互信息比如权限等就要放在Session中,一般的信息记录放Cookie就好了
- 单个Cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个Cookie
- Session 可以放在 文件、数据库或内存中
- 用户验证这种场合一般会用 Session。因此,维持一个会话的核心就是客户端的唯一标识,即Session ID
- Session 的运行依赖Session ID,而 Session ID 是存在 Cookie 中的,也就是说,如果浏览器禁用了 Cookie,Session 也会失效(但是可以通过其它方式实现,比如在 url 中传递 Session ID)
在Gin中使用session
安装
go get github.com/gin-contrib/sessions |
使用
func Session(){ |
Redis-session
redis-client
启动cli: |
安装
go get github.com/gin-contrib/sessions/redis |
使用
store, _ := redis.NewStore(10, "tcp", "localhost:6379", "", []byte("hallen")) |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Joohwan!
评论