github.com/gin-contrib/sessions库使用

github.com/gin-contrib/sessions库使用

通常使用标题的库来进行session的存储,session可以被存在数据库(mysql,Redis等),也可以存在cookie中,以下案例存在cookie当中:

package main

import (
	"encoding/gob"

	"github.com/gin-contrib/sessions"
	"github.com/gin-contrib/sessions/cookie"
	"github.com/gin-gonic/gin"
)

type user struct {
	Name string
	Age  int
}

func main() {
	//注册结构体,使其可以跨路由存取
	gob.Register(user{})
	r := gin.Default()
	store := cookie.NewStore([]byte("secret"))

	r.Use(sessions.Sessions("mysess", store))

	r.GET("/hello", func(c *gin.Context) {
		session := sessions.Default(c)

		//第一次访问写入
		if session.Get("hello") != "world" {
			session.Set("hello", "world")
			//记得写入
			session.Save()
		}
		session.Set("user", user{"hanyun", 30})
		session.Save()
		c.JSON(200, gin.H{"hello": session.Get("hello")})
	})

	r.GET("/user", func(c *gin.Context) {
		session := sessions.Default(c)
		user := session.Get("user")
		c.JSON(200, gin.H{"user": user})
	})

	r.Run(":8080")
}

注意:

  • gob.Register(user{}) 用于注册结构体,使其可以跨路由存取
  • session.Save() 在对session值进行修改时,注意要写入
  • postman可以管理cookie,测试的时候cookie不会随着服务的停止而消失,始终保留在客户机上
posted @ 2021-04-26 00:09  秋月桐  阅读(1000)  评论(0编辑  收藏  举报