最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Gin處理Session的實(shí)現(xiàn)

 更新時(shí)間:2026年07月07日 08:37:09   作者:H_拾憶  
Session 用于維持用戶會(huì)話狀態(tài),Gin 可借助 sessions 組件實(shí)現(xiàn)登錄態(tài)留存,支持 Cookie 本地存儲(chǔ)與 Redis 集群分布式存儲(chǔ),配置加密密鑰保障安全,感興趣的可以了解一下

1.Session:

Seesion是用戶與計(jì)算機(jī)程序(通常是網(wǎng)絡(luò)瀏覽器或移動(dòng)程序)之間交互的一段時(shí)間.在此期間,用戶執(zhí)行的一系列由程序處理的操作或請(qǐng)求,程序會(huì)維護(hù)有關(guān)活動(dòng)的狀態(tài)信息.例如用戶的身份 偏好和當(dāng)前的Session數(shù)據(jù).

2.Session作用:

保持用戶登錄狀態(tài):即使用戶離開程序并稍后返回,仍能保持用戶登錄狀態(tài).

提供個(gè)性化體驗(yàn):根據(jù)用戶之前的交互和偏好,顯示相關(guān)的內(nèi)容或信息.

2.1demo:

package main

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

func main() {
	request := gin.Default()
	//用secret進(jìn)行加密.
	store := cookie.NewStore([]byte("secret"))
	request.Use(sessions.Sessions("mysession", store))
}

創(chuàng)建了一個(gè)基于Cookie的Session存儲(chǔ).并使用秘鑰進(jìn)行加密.

3.登錄路由設(shè)置Session:

package main

import (
	"github.com/gin-contrib/sessions"
	"github.com/gin-gonic/gin"
	"net/http"
)

func main() {
	request := gin.Default()
	request.POST("/login", func(c *gin.Context) {
		userName := c.PostForm("username")
		passWord := c.PostForm("password")
		if userName != "" && passWord != "" {
			session := sessions.Default(c)
			session.Set("username", userName)
			session.Save()
			c.JSON(http.StatusOK, gin.H{"message":"登錄成功"})
		}else {
			c.JSON(http.StatusNotFound, gin.H{"message":"未找到登錄人"})
		}
	})
}

4.中間件校驗(yàn)Session:

func checkUserName() gin.HandlerFunc {
	return func(c *gin.Context) {
		userName := sessions.Default(c).Get("username")
		if userName == nil {
			c.AbortWithStatusJSON(http.StatusUnauthorized, gin.H{"message": "未授權(quán)訪問"})
			return
		}
		c.Set("username", userName)
		c.Next()
	}
}

5.Redis存儲(chǔ)Session:

package main

import (
	"github.com/gin-contrib/sessions"
	"github.com/gin-contrib/sessions/redis"
	"github.com/gin-gonic/gin"
	"net/http"
)

func main() {
	request := gin.Default()
	store, err := redis.NewStore(10, "tcp", "localhost:6379", "", "", []byte("secret"))
	if err != nil {
		panic(err)
	}
	request.Use(sessions.Sessions("mysession", store))
	request.POST("/login", func(c *gin.Context) {
		userName := c.PostForm("username")
		password := c.PostForm("password")
		if userName != "" || password != "" {
			session := sessions.Default(c)
			session.Set("username", userName)
			session.Save()
			c.JSON(http.StatusOK, gin.H{"message": "登錄成功"})
		} else {
			c.JSON(http.StatusNotFound, gin.H{"message": "用戶名錯(cuò)誤"})
		}
	})
}

func checkUserName() gin.HandlerFunc {
	return func(c *gin.Context) {
		userName := sessions.Default(c).Get("username")
		if userName == nil {
			c.AbortWithStatusJSON(http.StatusUnauthorized, gin.H{"message": "未授權(quán)訪問"})
			return
		}
		c.Set("username", userName)
		c.Next()
	}
}

上述代碼中利用redis作為Session存儲(chǔ)引擎.首先創(chuàng)建了一個(gè)具有十個(gè)連接池的Redis存儲(chǔ).連接到了位于localhost:6379的服務(wù)器,并使用秘鑰進(jìn)行了加密.

到此這篇關(guān)于Gin處理Session的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Gin處理Session內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Go語言如何通過通信共享內(nèi)存

    Go語言如何通過通信共享內(nèi)存

    這篇文章主要為大家介紹了Go語言如何通過通信共享內(nèi)存實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • 在Go語言單元測試中解決HTTP網(wǎng)絡(luò)依賴問題

    在Go語言單元測試中解決HTTP網(wǎng)絡(luò)依賴問題

    在 Go 語言中,我們需要找到一種可靠的方法來測試 HTTP 請(qǐng)求和響應(yīng),本文將探討在 Go 中進(jìn)行 HTTP 應(yīng)用測試時(shí),如何解決應(yīng)用程序的依賴問題,以確保我們能夠編寫出可靠的測試用例,需要的朋友可以參考下
    2023-07-07
  • go語言實(shí)現(xiàn)十大常見的排序算法示例

    go語言實(shí)現(xiàn)十大常見的排序算法示例

    這篇文章主要為大家介紹了go語言實(shí)現(xiàn)十大常見的排序算法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • 詳解golang執(zhí)行Linux shell命令完整場景下的使用方法

    詳解golang執(zhí)行Linux shell命令完整場景下的使用方法

    本文主要介紹了golang執(zhí)行Linux shell命令完整場景下的使用方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • golang使用sort接口實(shí)現(xiàn)排序示例

    golang使用sort接口實(shí)現(xiàn)排序示例

    這篇文章主要介紹了golang使用sort接口實(shí)現(xiàn)排序的方法,簡單分析了sort接口的功能并實(shí)例演示了基于sort接口的排序?qū)崿F(xiàn)方法,需要的朋友可以參考下
    2016-07-07
  • 盤點(diǎn)總結(jié)2023年Go并發(fā)庫有哪些變化

    盤點(diǎn)總結(jié)2023年Go并發(fā)庫有哪些變化

    這篇文章主要為大家介紹了2023年Go并發(fā)庫的變化盤點(diǎn)總結(jié),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • Go??import _ 下劃線使用

    Go??import _ 下劃線使用

    這篇文章主要為大家介紹了Go??import下劃線_使用小技巧,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • 使用Go+GoQuery庫實(shí)現(xiàn)頭條新聞采集

    使用Go+GoQuery庫實(shí)現(xiàn)頭條新聞采集

    在本文中,我們將介紹如何使用Go語言和GoQuery庫實(shí)現(xiàn)一個(gè)簡單的爬蟲程序,用于抓取頭條新聞的網(wǎng)頁內(nèi)容,我們還將使用爬蟲代理服務(wù),提高爬蟲程序的性能和安全性,我們將使用多線程技術(shù),提高采集效率,最后,我們將展示爬蟲程序的運(yùn)行結(jié)果和代碼,需要的朋友可以參考下
    2023-10-10
  • Go語言使用Goroutine并發(fā)打印的項(xiàng)目實(shí)踐

    Go語言使用Goroutine并發(fā)打印的項(xiàng)目實(shí)踐

    本文通過并發(fā)打印任務(wù)案例,講解Go語言Goroutine的使用、同步控制及高并發(fā)優(yōu)勢,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-08-08
  • 解決golang 關(guān)于全局變量的坑

    解決golang 關(guān)于全局變量的坑

    這篇文章主要介紹了解決golang 關(guān)于全局變量的坑,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-05-05

最新評(píng)論

阳城县| 略阳县| 桑日县| 汉源县| 河东区| 阳江市| 临城县| 绥棱县| 普宁市| 宣恩县| 富平县| 桐乡市| 舞阳县| 万山特区| 民乐县| 木里| 大埔县| 湛江市| 西安市| 阳西县| 舟山市| 定南县| 蒙阴县| 五指山市| 宝应县| 汾西县| 石门县| 芦溪县| 河南省| 通河县| 元朗区| 德州市| 神农架林区| 扎赉特旗| 桃江县| 元朗区| 汉沽区| 濮阳县| 乌苏市| 青神县| 合阳县|