Kong的插件: session

session的簡述

session和cookie都是用來解決HTTP的連接時無狀態的問題。比如我們常見的登錄問題,如果沒有session和cookie機制我們每次都要輸入用戶和密碼。
cookie是把狀態信息保留在客戶端,一旦cookie創建,瀏覽器就會給每次請求添加上cookie的請求頭,當cookie的信息比較大時,這無形給每次請求增加了負擔。
session是把用戶的狀態信息保留在服務端,把sessionID發送給客戶端並保存在cookie中,這種每次請求的時候,用戶只需帶着sessionID過來就行了。session無疑增加了服務端的負擔,比如要根據sessionID查詢session的信息,session的維護(定時清理等)。

Kong的session插件,說幾點

  • 存儲
    Kong支持兩種session的存儲方式cookie和kong。kong的方式是把session的狀態存儲在Kong的數據庫中(pg或者Cassandra);cookie的方式是把信息存儲在客戶端,這個是在用戶第一次訪問的時候,會返回一個Set-Cookie的頭給客戶端。
  • 過期時間
    Kong的session插件有兩個參數config.cookie_lifetime和config.cookie_renew。cookie_renew是說多久重建一次session,如果session重建了,客戶端存儲的cookie就失效了,服務端會再次返回Set-Cookie請求頭。
    cookie_lifetime是指session的最終過期時間,這個參數我沒理解透,我的理解是:如果我們訪問過程中session發生了重建,那麼cookie_lifetime就會被重置。後面是官方的解讀,如果有更好的理解請告訴我呀,萬分感激:
    Sessions will use the built-in Kong DAO ttl mechanism which destroys sessions after specified cookie_lifetime unless renewal occurs during normal browser activity.
  • cookie跨域
    Kong設置了三個參數Strict,Lax, off。每個請求其實是有兩個屬性起源域名origin和目的域名destination,當origin和destination不一樣時就是跨域請求了。
    Strict,當origin和destination不一樣時就不會發送該cookie
    Lax, 當origin和destination不一樣時,會有一種情況就是origin是其他的域名,destination是本域名(Kong的8000端口所在的域名),這種情況會發送cookie
    off, 不管情況都會發送

做個小實驗

  • 環境準備
    你需要有一個service和route,如果沒有的話,參考https://blog.csdn.net/u014686399/article/details/100084613,我的試驗也是基於這個
  • 啓用插件
/services/4abd8249-936a-477d-ac3e-7b21a00aa3f6/plugins POST
{
	"name":"session",
	"config":{
		"storage": "kong",
		"cookie_secure": false
	}
}

  • 4abd8249-936a-477d-ac3e-7b21a00aa3f6 這是服務的id
  • storage 使用Kong的存儲
  • 測試
    首次訪問
curl -i -X GET     --url http://172.16.0.92:31545/xjj_example/main?apikey='U3FffwYrxdvEtNmevAmWMiXpZ3pQiwNv'
  • 我添加了key-auth插件所以我的請求要添加apikey,如果你沒有添加key-auth插件,就不用添加這個頭

在這裏插入圖片描述

  • 我們帶着cookie來訪問
curl -i -X GET \
    --url http://172.16.0.92:31545/xjj_tv/main?apikey='U3FffwYrxdvEtNmevAmWMiXpZ3pQiwNv' \
     -H "session=G6mKAW9_Hsavn4nXrR60Uw..|1567138877|XKFcMNdtQcn84jw8eIlMg5sLjwE.; Path=/; SameSite=Strict; HttpOnly"

在這裏插入圖片描述

  • Kong的session插件的 logout
    這個我沒研究明白,請各位大神指點一下

先寫到這裏了,有問題進QQ羣630300475

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章