最新国产好看的视频,伊人天堂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):即使用戶離開(kā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)訪問(wè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)訪問(wè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語(yǔ)言如何通過(guò)通信共享內(nèi)存

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

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

    在Go語(yǔ)言單元測(cè)試中解決HTTP網(wǎng)絡(luò)依賴(lài)問(wèn)題

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

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

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

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

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

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

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

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

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

    Go??import _ 下劃線使用

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

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

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

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

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

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

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

最新評(píng)論

汤原县| 平武县| 沂水县| 永善县| 涿鹿县| 房产| 博客| 琼海市| 罗源县| 繁昌县| 汾阳市| 隆子县| 正安县| 江安县| 天门市| 邢台县| 浦县| 将乐县| 双江| 井研县| 平湖市| 贵德县| 蓝山县| 彰化市| 沙坪坝区| 新兴县| 澜沧| 开阳县| 沧州市| 洛阳市| 扶风县| 修武县| 达日县| 顺平县| 利川市| 庆城县| 北宁市| 陆河县| 曲靖市| 盐城市| 武宁县|