W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎勵
?GoFrame
?框架提供了完善的?Session
?管理能力,由?gsession
?組件實(shí)現(xiàn)。由于?Session
?機(jī)制在?HTTP
?服務(wù)中最常用,因此后續(xù)章節(jié)中將著重以?HTTP
?服務(wù)為示例介紹?Session
?的使用。
接口文檔:https://pkg.go.dev/github.com/gogf/gf/v2/os/gsession
任何時候都可以通過?ghttp.Request
?獲取?Session
?對象,因?yàn)?Cookie
?和?Session
?都是和請求會話相關(guān),因此都屬于?Request
?的成員對象,并對外公開。?GoFrame
?框架的?Session
?默認(rèn)過期時間是24小時。
?SessionId
?默認(rèn)通過?Cookie
?來傳遞,并且也支持客戶端通過?Header
?傳遞?SessionId
?,?SessionId
?的識別名稱可以通過?ghttp.Server
?的?SetSessionIdName
?進(jìn)行修改。?Session
?的操作是支持并發(fā)安全的,這也是框架在對?Session
?的設(shè)計上不采用直接以?map
?的形式操作數(shù)據(jù)的原因。在?HTTP
?請求流程中,我們可以通過?ghttp.Request
?對象來獲取?Session
?對象,并執(zhí)行相應(yīng)的數(shù)據(jù)操作。
此外,?ghttp.Server
?中的?SessionId
?使用的是客戶端的 ?RemoteAddr + Header
? 請求信息通過?guid
?模塊來生成的,保證隨機(jī)及唯一性:https://github.com/gogf/gf/v2/blob/master/net/ghttp/ghttp_request.go
需要注意的是,?ghttp.Request
?中的?Session
?對象采用了"懶初始化(?LazyInitialization
?)"設(shè)計方式,默認(rèn)在?Request
?中有一個?Session
?屬性對象,但是并未初始化(一個空對象),只有在使用?Session
?屬性對象的方法時才會真正執(zhí)行初始化。這樣的設(shè)計既保障了未使用?Session
?特性的請求執(zhí)行性能,也保證了組件使用的易用性。
?Session
?的管理功能由獨(dú)立的?gsession
?模塊實(shí)現(xiàn),并已完美整合到了?ghttp.Server
?中。由于該模塊是解耦獨(dú)立的,因此可以應(yīng)用到更多不同的場景中,例如:?TCP
?通信、?gRPC
?接口服務(wù)等等。在?gsession
?模塊中有比較重要的三個對象/接口:
gsession.Manager
?:管理?Session
?對象、?Storage
?持久化存儲對象、以及過期時間控制。
gsession.Session
?:單個?Session
?會話管理對象,用于?Session
?參數(shù)的增刪查改等數(shù)據(jù)管理操作。
gsession.Storage
?:這是一個接口定義,用于?Session
?對象的持久化存儲、數(shù)據(jù)寫入/讀取、存活更新等操作,開發(fā)者可基于該接口實(shí)現(xiàn)自定義的持久化存儲特性。 該接口定義詳見:https://github.com/gogf/gf/v2/blob/master/os/gsession/gsession_storage.go?gsession
?實(shí)現(xiàn)并為開發(fā)者提供了常見的四種?Session
?存儲實(shí)現(xiàn)方式:
Session-File
?Session-Memory
?Redis
?存儲(?Key-Value
?)。遠(yuǎn)程?Redis
?節(jié)點(diǎn)存儲?Session
?數(shù)據(jù),支持應(yīng)用多節(jié)點(diǎn)部署:?Session-Redis-KeyValue
?Redis
?存儲(?HashTable
?)。遠(yuǎn)程?Redis
?節(jié)點(diǎn)存儲?Session
?數(shù)據(jù),支持應(yīng)用多節(jié)點(diǎn)部署:?Session-Redis-HashTable
?四種方式各有優(yōu)劣,詳細(xì)介紹請查看對應(yīng)章節(jié)。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: