如何禁用session

2021-10-06 20:07:52 字數 1013 閱讀 7358

事情的起因是從群友的乙個問題開始的:如何禁用session?

為什麼要禁用session的?他的理由是現在的專案身份校驗是基於快取實現的,沒有用到session,而session是要佔記憶體的,卻沒有用到,這裡白白浪費了記憶體。一開始還覺的挺有道理,後來去實驗加閱讀原始碼發現不是這麼回事。

首先,session是什麼時候生成?一直以來都以為在瀏覽器訪問後台就會有session,其實並不然,session是在後台第一次呼叫request.getsession()方法後生成的。首先進行測試:

這裡寫了乙個測試介面,然後分別注釋和不注釋對應的**。開啟瀏覽器,訪問,開啟f12,我們會發現兩次的結果不一樣

經過追蹤,發現這個地方已經有了session物件

**比較多,這裡直接定位到關鍵**:

很明顯,就是這裡產生的session,然後把sessionid存到cookie裡去。我們就可以得出結論,session是在後台呼叫getsession()時產生的(當然這裡進行了許多的判斷)。這裡提一句,之前的jsp檔案會預設的進行一次getsession()操作,這可能是禁用session這個需求的**。

那麼,我們知道了session是如何產生的,那如何禁用session呢,很明顯啊,不呼叫getsession()不就成了嘛。

那我非得呼叫getsession()呢,這裡提供個思路:去重寫getsession()方法。

禁用cookie後,如何使用session?

大家都知道,session的sessionid是通過cookie來儲存的,那麼如果我們的瀏覽器禁用了cookie,還可以使用session嗎?這道面試題是不是經常被問?你能答得出來嗎?禁用cookie後,session還是可以使用的。禁用cookie後,伺服器每次session start的時候都會...

禁用cookie後session是如何設定的

當在session會話有基於cookie和基於url兩種傳遞sessionid的方法。為了實現客戶端禁止cookie傳送的情況也不影響客戶登陸 可以設定php.ini中 session.use trans sid 1,表示當客戶端瀏覽器禁止cookie的時候,頁面上的鏈結會基於url傳遞sessio...

禁用cookie後session是如何設定的

我們都知道當在session會話有基於cookie和基於url兩種傳遞sessionid的方法。為了實現客戶端禁止cookie傳送的情況也不影響客戶登陸 可以設定php.ini中 session.use trans sid 1,表示當客戶端瀏覽器禁止cookie的時候,頁面上的鏈結會基於url傳遞s...