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不會隨着服務的停止而消失,始終保留在客戶機上


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM