gin session和cookie
gin session和cookie
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/