一、cookie:
cookie主要儲存一些不敏感的資料,只能儲存字串型別
執行過程:
(1)第一次請求:
客戶端將資料(比如使用者名稱)以請求報文的形式請求伺服器端響應,
伺服器端得到資料(使用者名稱),
如果登入成功則用cookie儲存在客戶端上,cookie建立並賦值如下:
鍵","值"
);response.cookies.add(cookie);
也可以通過瀏覽器發過來的請求報文來獲得cookie物件:
(2)第二次請求:
這樣就可以滿足需求,當使用者再次請求頁面時,就可以對使用者cookie的判斷,
來預先填充一些資料。
cookie的取值**如下:
request.cookies["鍵"].value.tostring();
cookie 可以設定過期的時間(設定cookie為硬碟cookie):
cookie.expires = datetime.now.addhours(1);
判斷cookie是否存在(判斷獲得的cookie物件是否為空)
if(request.cookie["鍵"]==null)
二、session:
要實現session功能,必須實現system.web.sessionstate.irequiressessionstate 標記介面
session的存在也是為了免去使用者重複性的去輸入一些資料,
不同的是session可以儲存一些資料敏感的資料(pwd,密碼),可以是任意型別的,
這樣就可以實現免登陸(使用者登入一次之後,如果不退出瀏覽器,第二次可直接進入主頁),
執行過程:
(1)第一次請求
瀏覽器將資料通過請求報文的形式,請求伺服器端響應,
伺服器判斷使用者名稱密碼是否正確,
正確之後,用session儲存資料,**如下:
存值,session是以鍵值對形式儲存的:
context.session["鍵"]="
值";
這一步是伺服器端自動完成的,伺服器會把session存到session池中,
session池中物件的鍵(asp.net_sessionid)是隨機生成的,
session池中的值就是剛才儲存的session鍵值對,context.session["pwd"],
將asp.net_sessionid以cookie形式返回,返回的cookie是以快取儲存在瀏覽器端,
(2)第二次請求
在第一次請求後,瀏覽器已經獲得了乙個asp.net_sessionid,
在第二次請求時,會將asp.net_sessionid帶到請求報文頭中,
這樣在執行aspx頁面的管道事件的第9到第11個事件時,根據asp.net_sessionid
找到session池中對應的session物件,並將這個物件賦值給上下文物件context中。
session的取值**如下:
context.session["鍵"].tostring();
將session清除的**如下:
context.session.abandon();
判斷session是否存在session(判斷獲得的session物件是否為空)
if(context.session["鍵"]==null)
三、可以使用cookie與session的組合來一些功能
(1)需求:使用者登入一次頁面成功之後,以後再登入其他頁面時可以不用通過登入頁面,
前提是只要不退出瀏覽器,一旦退出瀏覽器,使用者需重新通過登入頁面
這是通過session來實現
登入成功後將查詢到的使用者名稱存到session中:
context.session["鍵"]="
值";
以後每個頁面首先判斷session是否存在:
if(context.session["鍵"]==null)
(2)需求:實現使用者的7天免登入,
這是通過session 與cookie組合完成的
登入成功後將查詢到的使用者名稱存到session中:
context.session["鍵"]="
值";
如果使用者選擇了免登入,因為cookie不能儲存使用者敏感資料,
用cookie記錄當前使用者的id,並設定過期時間為7天,
鍵","值"
);cookie.expires = datetime.now.adddays(7
);response.cookies.add(cookie);
以後在判斷完session是否存在後,再判斷使用者 id的cookie是否存在,
如果cookie存在,則取出id,並在資料庫中查詢使用者名稱賦值給session,
stringid= request.cookies["鍵"].value.tostring();
然後查詢出使用者名稱,
context.session["鍵
"] = "
使用者名稱";
(3)需求:登入成功之後,在每個頁面上顯示使用者名稱
通過session實現
在aspx前台頁面上如下**:
<%= session["鍵"] %>
cookie與session的關聯
前提 cookie沒有被禁用。當用瀏覽器登入到某 伺服器時,先找對應的cookie檔案,當首次訪問是當然沒有cookie檔案,所以在請求頭部中沒有cookie的內容,即在請求頭部中沒有類似cookie jsessionid 的內容,這時當請求到達伺服器後,伺服器看請求頭中沒有jsessionid值,...
session與cookie的區別
讓我們用幾個例子來描述一下cookie和session機制之間的區別與聯絡。筆者曾經常去的一家咖啡店有喝5杯咖啡免費贈一杯咖啡的優惠,然而一次性消費5杯咖啡的機會微乎其微,這時就需要某種方式來紀錄某位顧客的消費數量。想象一下其實也無外乎下面的幾種方案 1 該店的店員很厲害,能記住每位顧客的消費數量,...
session與cookie的區別
1 session儲存在伺服器,客戶端不知道其中的資訊 cookie儲存在客戶端,伺服器能夠知道其中的資訊。2 session中儲存的是物件,cookie中儲存的是字串。3 session不能區分路徑,同乙個使用者在訪問乙個 期間,所有的session在任何乙個地方都可以訪問到。而cookie中如果...