gin session和cookie

gin session和cookie

设置cookie

ctx.SetCookie(name,value,maxAge,path,domain,secure,httpOnly)

name 要设定的key
value 为值
MaxAge 过期时间
path cookie的路径  /
domain  作用域 本地调试为localhost 正式为域名
secure为true时,cookie在HTTP中无效,在HTTPS中生效
httpOnly是微软对cookie的扩展,为true时 通过程序如js脚本无法读取到cookie信息,防止xss攻击

获取cookie

cookie,err :=ctx.Cookie("key")   key指定设定的key

Session

gin中没有Session组件需要借助第三方 session

该组件支持的存储引擎有 redis memcached mongodb等

基于cookie存储设置session

安装session包

go get github.com/gin-contrib/sessions

基于cookie设置session

引入
import (
"github.com/gin-contrib/sessions"
"github.com/gin-contrib/sessions/cookie"
)

r := gin.Default()
//创建基于cookie的存储引擎并设置加密的密钥串
store := cookie.NewStore([]byte("secret")) //secrrt为自定义的密钥串
//设置session中间件。session的名字为mysession
r.Use(sessions.Sessions("mysession",store))
//初始化session对象
session :=sessions.Default(ctx) 
//设置session过期时间
session.Options(sessions.Options{
	MaxAge: 3600,  单位是秒 1小时
}) 
//设置session
session.Set("username","admin") 
session.save()
//获取session
username :=session.Get("username")

基于Redis设置session

安装redis引擎包

go get github.com/gin-contrib/sessions/redis

设置session

import (
	"github.com/gin-contrib/sessions"
	"github.com/gin-contrib/sessions/redis"

)

r :=gin.Default()
//初始化基于redis的session引擎,第一个参数为连接数,第二个参数是协议为tcp,第三个参数代表redis的连接地址和端口,第四个参数为连接redis的密码,第五个参数指定自定义密钥串,这里为secret
store,_ :=redis.NewStore(10,"tcp","127.0.0.1:6379","",[]byte("secret"))

r.Use(sessions.Sessions("mysession","store"))
session :=sessions.Default(ctx)
session.Set("username","admin")
session.Save()
username :=session.Get("username")

gin session和cookie
http://www.jcwit.com/article/510/
作者
Carlos
发布于
2024年4月11日
许可协议