Beego框架:cookie和session
阿新 • • 發佈:2018-11-21
#Cookie
簡介
###什麼是Cookie
- HTTP是無狀態的協議,伺服器不能記錄瀏覽器的訪問狀態,也就是說伺服器不能區分兩次請求是否是一個客戶端,這樣的設計嚴重的阻礙了web程式的設計。
- Cookie是解決HTTP協議無狀態的方案之一。
- Cookie實際上就是伺服器儲存在瀏覽器上的一段資訊,瀏覽器有了Cookie之後,每次向伺服器傳送請求時都會同時將該資訊傳送給伺服器,伺服器在收到請求之後,就可以根據該資訊處理請求。
- Cookie由伺服器建立,併發送給瀏覽器,最終由瀏覽器儲存。
###Cookie的用途
- 電商網站的購物車
- 保持使用者登入狀態
###Cookie的缺點
- Cookie作為請求或者響應的報文進行傳送,無形中增加了網路流量
- Cookie使用明文傳送安全性差
- 各個瀏覽器對Cookie有限制,每個網站大概只能儲存20個Cookie
- 可以在瀏覽器禁止Cookie
###Cookie的使用 this.Ctx.SetCookie("username", "admin")
1.設定Cookie,引數一為Cookie名稱,引數二為Cookie值
2.設定Cookie是不能存在中文,如果存在中文雖然可以設定成功,但是不能取出.- 取出
Cookie:this.Ctx.GetCookie("username")
this.Ctx.SetCookie("username", "admin", 10)
1.引數三為Cookie的存活時間,單位秒。
2.如果不設定時間,Cookie只在本次回話有效,Beego預設存活3600秒。this.Ctx.SetCookie("username", "admin", 60*60*60*60, "/demo2")
1.Cooie的路徑是指告訴瀏覽器訪問那些網址時需要帶上該Cookie.
2.瀏覽器會儲存很多網站的Cookie,比如百度的Cookie,新浪的Cookie,騰訊的Cookie,瀏覽器在訪問百度時不可能傳送新浪的Cookie,也不可能訪問每個網站都帶上所有的Cookie,所以我們需要為Cookie設定一個Path屬性,用於告訴瀏覽器何時需要帶上該Cookie。
3.我們訪問的網站必須是Cookie儲存路徑的子集,在訪問伺服器時才會帶上該Cookie。
4.如果是想設定Cookie的儲存路徑而不設定存活時間是不行的,因為SetCookie方法預設第三個引數是設定存活時間,第四個引數是設定儲存路徑。
#Session
##Session是什麼
- Session是一段儲存在伺服器上的資訊,當客戶端第一次訪問伺服器時建立Session,同時也建立一個名為beegosessionID,值為建立的Seesion的id的Cookie。
- 這個beegoseesionID對應伺服器中的一個Session物件,通過它就可以獲取到儲存使用者資訊的Session。
##Seeion的必要性
- 使用Cookie有一個非常大的侷限,如果Cookie很多,則無形的增加了客戶端與服務端的資料傳輸。
- Cookie安全性差
- 由於大部分瀏覽器對Cookie大小和數量有限制,所以不能在Cookie中儲存過多的資訊。
##Session的使用
- Beego預設關閉Session,如果想要使用Session,需要在主函式中或配置檔案中開啟Session,分別為
Beego.BConfig.WebConfig.Session.SessionOn = true,session = true
。 - 設定
Session: this.SetSession("username", "admin")
this.GetSession("username")
,如果沒有獲取到Session和GetCookie不一樣,GetCookie會返回空字串,但是GetSession返回nil。- 通過
this.DelSession("username")
和this.DestroySession()
均可刪除Session,其區別在於DelSession刪除指定Session,而DestroySession刪除全session。 - 設定Sesson的時候可以存在中文。Beego中的Session在當前回話預設存活3600秒,可以在主函式或配置檔案中設定Session的存活時間,分別為
beego.BConfig.WebConfig.Session.SessionGCMaxLifetime,sessiongcmaxlifetime
- 可以通過
beego.BConfig.WebConfig.Session.SessionName = "hellobeegoid123"
和sessionname=hellobeegoid
來設定session的名稱,如果同時在配置檔案和主函式中設定,主函式優先,應為beego先讀取配置檔案後執行主函式,所以主函式優先。
學院Go語言視訊主頁
https://edu.csdn.net/lecturer/1928
清華團隊帶你實戰區塊鏈開發
掃碼獲取海量視訊及原始碼 QQ群:721929980