## **什么是session?**
* Session是在***無狀態***的HTTP協議下,服務端記錄用戶狀態時用于標識具體用戶的機制
* 它是在服務端保存的用來跟蹤用戶的狀態的數據結構,可以保存在文件、數據庫或者集群中
* 在瀏覽器關閉后這次的Session就消失了,下次打開就不再擁有這個Session。其實并不是Session消失了,而是Session ID變了,
## **什么是cookie?**
* Cookie是客戶端保存用戶信息的一種機制,用來記錄用戶的一些信息
* 每次HTTP請求時,客戶端都會發送相應的Cookie信息到服務端。它的過期時間可以任意設置,如果你不主動清除它,在很長一段時間里面都可以保留著,即便這之間你把電腦關機了。
## **session和cookie:**
* Cookie 在客戶端(瀏覽器),Session 在服務器端。
* Cookie的安全性一般,他人可通過分析存放在本地的Cookie并進行Cookie欺騙。在安全性第一的前提下,選擇Session更優。重要交互信息比如權限等就要放在Session中,一般的信息記錄放Cookie就好了。
* 單個Cookie保存的數據不能超過4K,很多瀏覽器都限制一個站點最多保存20個Cookie。
* Session 可以放在 文件、數據庫或內存中
* 用戶驗證這種場合一般會用 Session。因此,維持一個會話的核心就是客戶端的唯一標識,即Session ID。
* Session 的運行依賴Session ID,而 Session ID 是存在 Cookie 中的,也就是說,如果瀏覽器禁用了 Cookie,Session 也會失效(但是可以通過其它方式實現,比如在 url 中傳遞 Session ID)
## **beego中使用session:**
* #### 開啟session
* main.go中開啟:
* beego.BConfig.WebConfig.Session.SessionOn = true
* 配置文件中紅開啟:
* sessionon = true
* #### 使用session
* 設置session
* SetSession(name string, value interface{})
* this.SetSession("username", "zhiliao")
* 獲取session
* GetSession(name string) interface{}
* this.GetSession("username")
* 刪除session
* this.DelSession(name string)
* ***不建議***:操作sess對象,自己在操作的過程中可能會導致資源沒釋放的問題
* ~~~
sess:=this.StartSession() ? ?
defer sess.SessionRelease()
sess.Set()
sess.Get()
sess.Delete()
sess.SessionID()
sess.Flush()
~~~
* #### 關于session的一些其他配置
* **設置是否開啟 Session**
* beego.BConfig.WebConfig.Session.SessionOn
* 默認為false
* **設置 Session 過期的時間**
* beego.BConfig.WebConfig.Session.SessionGCMaxLifetime
* 默認值是 3600 秒
* 設置 cookie 的過期時間
* beego.BConfig.WebConfig.Session.SessionCookieLifeTime
* 設置sessionid加密算法
* beego.BConfig.WebConfig.Session.SessionHashFunc
* 默認值為 sha1
* 修改sessionkey
* beego.BConfig.WebConfig.Session.SessionHashKey
* 默認的 key 是 beegoserversessionkey,建議在使用的時候修改該參數
* 設置 cookies 的名字
* beego.BConfig.WebConfig.Session.SessionName
* Session 默認是保存在用戶的瀏覽器 cookies 里面的,默認名是 beegosessionID,配置文件對應的參數名是:sessionname。
示例:
- go環境搭建
- 解決go get網絡慢的問題
- beego的安裝
- bee的安裝
- 編輯器
- go module
- 配置文件詳解
- 配置文件其他說明
- 路由方法
- 路由
- 數據校驗
- 校驗函數
- 頁面跳轉
- 獲取前端數據
- json文件的獲取
- xsrf的用法
- xsrf的防護
- srfs和json的搭配
- flash的用法
- 過濾器
- url反轉
- 各類數據的處理
- 模板函數
- 內置模板函數
- 自定義模板函數
- 模板
- 模板處理
- 模板渲染
- 視圖文件的處理
- 靜態文件
- 請求方式判斷
- 驗證碼
- 另一種方法
- 分頁類
- session
- 登錄判斷
- orm模塊
- 使用方法
- mysql的安裝
- 安裝orm及驅動
- 建立模型
- 自定義模型
- 增刪改查
- 高級查詢
- 常見問題匯總
- 代碼收藏
- 打包部署
- go build打包
- utils收藏
- 新goer容易犯的錯
- 字符串操作