.net中的session與cookies區(qū)別及使用方法
更新時間:2013年04月08日 16:57:13 作者:
cookie數(shù)據(jù)存放在客戶的瀏覽器上,session數(shù)據(jù)放在服務(wù)器上,cookie不是很安全,別人可以分析存放在本地的COOKIE并進(jìn)行COOKIE欺騙,考慮到安全應(yīng)當(dāng)使用session
先介紹一下比較簡單的使用方法:
給COOKIES賦值
Response.Cookies["uid"].Value = "20";
Response.Cookies["LoginCode"].Value = "58469";
以上就是分別對兩個COOKIES變量賦了兩個不同的傳,那么在使用COOKIES時,我們怎樣來控制COOKIES的有效期呢,看下面:
Response.Cookies["uid"].Expires = DateTime.Now.AddDays(1);
Response.Cookies["LoginCode"].Expires = DateTime.Now.AddDays(1);
上面是分別對兩個變量的有效期的1天,當(dāng)然也是幾小時,方法如下:
Response.Cookies["LoginCode"].Expires =DateTime.Now.AddHours(1);
這是有效期為1小時,同樣的方法可以類推成幾分鐘,幾秒等等。
那我們?nèi)绾潍@得這些COOKIES的值呢?這里要注意一點,在COOKIES沒有被賦值時,你要調(diào)用就會出錯,所以我們一般在調(diào)用之前會先判斷一下,此COOKIES是否存在,方法:
if (Request.Cookies["uid"] != null)
{
string ruid = Request.Cookies["uid"].Value;
}
在.NET里獨有的賦值方法:
System.Web.HttpCookie user_cookies_id=new HttpCookie("uid");
user_cookies_id.Value="20";
user_cookies_id.Expires=DateTime.Now.AddDays(1);
Response.AppendCookie(user_cookies_id);
--------------------------------
HttpCooKie acookie=new Httpcookie("lastvisitcounter");
acookie.value=lastvisitcounter.ToString();
acookie.Expires=DateTime.MaxValue;
Response.Cookie.Add(acookie);
if(Request.Cookies["lastvisitcounter"]==null)
{
textbox1.text="1";
}
else
{
HttpCookie acookie=request.Cookies["lastvisitcounter"];
textbox1.text=server.HtmiEncode(acookie.value);
}
session的使用
session("username")="aa" 寫入
username=session("username") 讀取
Session即會話,是指一個用戶在一段時間內(nèi)對某一個站點的一次訪問。
Session對象在.NET中對應(yīng)HttpSessionState類,表示“會話狀態(tài)”,可以保存與當(dāng)前用戶會話相關(guān)的信息。
Session對象用于存儲從一個用戶開始訪問某個特定的aspx的頁面起,到用戶離開為止,特定的用戶會話所需要的信息。用戶在應(yīng)用程序的頁面切換時,Session對象的變量不會被清除。
對于一個Web應(yīng)用程序而言,所有用戶訪問到的Application對象的內(nèi)容是完全一樣的;而不同用戶會話訪問到的Session對象的內(nèi)容則各不相同。
Session可以保存變量,該變量只能供一個用戶使用,也就是說,每一個網(wǎng)頁瀏覽者都有自己的Session對象變量,即Session對象具有唯一性。
(1)將新的項添加到會話狀態(tài)中
語法格式為:
Session ("鍵名") = 值 或者 Session.Add( "鍵名" , 值)
(2)按名稱獲取會話狀態(tài)中的值
語法格式為: 變量 = Session ("鍵名") 或者 變量 = Session.Item("鍵名")
(3)刪除會話狀態(tài)集合中的項
語法格式為: Session.Remove("鍵名")
(4)清除會話狀態(tài)中的所有值
語法格式為: Session.RemoveAll() 或者 Session.Clear()
(5)取消當(dāng)前會話
語法格式為: Session.Abandon()
(6)設(shè)置會話狀態(tài)的超時期限,以分鐘為單位。
語法格式為: Session.TimeOut = 數(shù)值
Global.asax 文件中有2個事件應(yīng)用于Session對象
事件名稱 說明
Session_Start 在會話啟動時激發(fā)
Session_End 在會話結(jié)束時激發(fā)
.net 中的session與cookies
Session又稱為會話狀態(tài),是Web系統(tǒng)中最常用的狀態(tài),用于維護(hù)和當(dāng)前瀏覽器實例相關(guān)的一些信息。HTTP 是一種無狀態(tài)協(xié)議。這意味著 Web 服務(wù)器會將針對頁面的每個 HTTP 請求作為獨立的請求進(jìn)行處理。服務(wù)器不會保留以前的請求過程中所使用的變量值的任何信息。ASP.NET 會話狀態(tài)將來自限定時間范圍內(nèi)的同一瀏覽器的請求標(biāo)識為一個會話,當(dāng)每個用戶首次與這臺WWW服務(wù)器建立連接時,他就與這個服務(wù)器建立了一個Session,同時服務(wù)器會自動為其分配一個SessionID,用以標(biāo)識這個用戶的唯一身份。
舉個例子來說,我們可以把已登錄用戶的用戶名放在Session中,這樣就能通過判斷Session中的某個Key來判斷用戶是否登錄,如果登錄的話用戶名又是多少。
Cookies
cookie 是一小段文本信息,伴隨用戶請求,在web服務(wù)器和瀏覽器之間傳遞。用戶每次訪問站點的時候,
web應(yīng)用程序都可以讀取cookie包含的信息。
假設(shè)在用戶請求您的網(wǎng)站的某個頁面時,您的應(yīng)用程序不僅是返回請求的頁面。同時也返回一個包含日期
和時間的cookie。用戶的瀏覽器在獲得頁面的同時也獲得了cookie.并且cookie保存在客戶端的cookie文件夾中。
指定cookie的名字和要保存的值。可以創(chuàng)建多個,但每個cookie的名字必須唯一,以便日后取值時識別。(cookie是按名字儲存的,要創(chuàng)建兩個名稱相同的cookie,那么最后那個cookie將覆蓋前一個。)同時可以給cookie指定過期日期和時間.cookie是寫入到用戶硬盤上的,然后可能一直都留在磁盤上。因此,指定cookie的過期日期和時間。當(dāng)用戶下次訪問站點的時候,瀏覽器會先檢查您站點的所有cookie,如果某個cookie已經(jīng)過期,瀏覽器不會把這個cookie隨頁面請求一起發(fā)送給服務(wù)器,而是刪除。
cookie 和session 的區(qū)別:
1、cookie數(shù)據(jù)存放在客戶的瀏覽器上,session數(shù)據(jù)放在服務(wù)器上。
2、cookie不是很安全,別人可以分析存放在本地的COOKIE并進(jìn)行COOKIE欺騙
考慮到安全應(yīng)當(dāng)使用session
3、session會在一定時間內(nèi)保存在服務(wù)器上。當(dāng)訪問增多,會比較占用你服務(wù)器的性能
考慮到減輕服務(wù)器性能方面,應(yīng)當(dāng)使用COOKIE
4、單個cookie在客戶端的限制是3K,就是說一個站點在客戶端存放的COOKIE不能3K。
給COOKIES賦值
復(fù)制代碼 代碼如下:
Response.Cookies["uid"].Value = "20";
Response.Cookies["LoginCode"].Value = "58469";
以上就是分別對兩個COOKIES變量賦了兩個不同的傳,那么在使用COOKIES時,我們怎樣來控制COOKIES的有效期呢,看下面:
復(fù)制代碼 代碼如下:
Response.Cookies["uid"].Expires = DateTime.Now.AddDays(1);
Response.Cookies["LoginCode"].Expires = DateTime.Now.AddDays(1);
上面是分別對兩個變量的有效期的1天,當(dāng)然也是幾小時,方法如下:
復(fù)制代碼 代碼如下:
Response.Cookies["LoginCode"].Expires =DateTime.Now.AddHours(1);
這是有效期為1小時,同樣的方法可以類推成幾分鐘,幾秒等等。
那我們?nèi)绾潍@得這些COOKIES的值呢?這里要注意一點,在COOKIES沒有被賦值時,你要調(diào)用就會出錯,所以我們一般在調(diào)用之前會先判斷一下,此COOKIES是否存在,方法:
復(fù)制代碼 代碼如下:
if (Request.Cookies["uid"] != null)
{
string ruid = Request.Cookies["uid"].Value;
}
在.NET里獨有的賦值方法:
復(fù)制代碼 代碼如下:
System.Web.HttpCookie user_cookies_id=new HttpCookie("uid");
user_cookies_id.Value="20";
user_cookies_id.Expires=DateTime.Now.AddDays(1);
Response.AppendCookie(user_cookies_id);
--------------------------------
HttpCooKie acookie=new Httpcookie("lastvisitcounter");
acookie.value=lastvisitcounter.ToString();
acookie.Expires=DateTime.MaxValue;
Response.Cookie.Add(acookie);
if(Request.Cookies["lastvisitcounter"]==null)
{
textbox1.text="1";
}
else
{
HttpCookie acookie=request.Cookies["lastvisitcounter"];
textbox1.text=server.HtmiEncode(acookie.value);
}
session的使用
session("username")="aa" 寫入
username=session("username") 讀取
Session即會話,是指一個用戶在一段時間內(nèi)對某一個站點的一次訪問。
Session對象在.NET中對應(yīng)HttpSessionState類,表示“會話狀態(tài)”,可以保存與當(dāng)前用戶會話相關(guān)的信息。
Session對象用于存儲從一個用戶開始訪問某個特定的aspx的頁面起,到用戶離開為止,特定的用戶會話所需要的信息。用戶在應(yīng)用程序的頁面切換時,Session對象的變量不會被清除。
對于一個Web應(yīng)用程序而言,所有用戶訪問到的Application對象的內(nèi)容是完全一樣的;而不同用戶會話訪問到的Session對象的內(nèi)容則各不相同。
Session可以保存變量,該變量只能供一個用戶使用,也就是說,每一個網(wǎng)頁瀏覽者都有自己的Session對象變量,即Session對象具有唯一性。
(1)將新的項添加到會話狀態(tài)中
語法格式為:
Session ("鍵名") = 值 或者 Session.Add( "鍵名" , 值)
(2)按名稱獲取會話狀態(tài)中的值
語法格式為: 變量 = Session ("鍵名") 或者 變量 = Session.Item("鍵名")
(3)刪除會話狀態(tài)集合中的項
語法格式為: Session.Remove("鍵名")
(4)清除會話狀態(tài)中的所有值
語法格式為: Session.RemoveAll() 或者 Session.Clear()
(5)取消當(dāng)前會話
語法格式為: Session.Abandon()
(6)設(shè)置會話狀態(tài)的超時期限,以分鐘為單位。
語法格式為: Session.TimeOut = 數(shù)值
Global.asax 文件中有2個事件應(yīng)用于Session對象
事件名稱 說明
Session_Start 在會話啟動時激發(fā)
Session_End 在會話結(jié)束時激發(fā)
.net 中的session與cookies
Session又稱為會話狀態(tài),是Web系統(tǒng)中最常用的狀態(tài),用于維護(hù)和當(dāng)前瀏覽器實例相關(guān)的一些信息。HTTP 是一種無狀態(tài)協(xié)議。這意味著 Web 服務(wù)器會將針對頁面的每個 HTTP 請求作為獨立的請求進(jìn)行處理。服務(wù)器不會保留以前的請求過程中所使用的變量值的任何信息。ASP.NET 會話狀態(tài)將來自限定時間范圍內(nèi)的同一瀏覽器的請求標(biāo)識為一個會話,當(dāng)每個用戶首次與這臺WWW服務(wù)器建立連接時,他就與這個服務(wù)器建立了一個Session,同時服務(wù)器會自動為其分配一個SessionID,用以標(biāo)識這個用戶的唯一身份。
舉個例子來說,我們可以把已登錄用戶的用戶名放在Session中,這樣就能通過判斷Session中的某個Key來判斷用戶是否登錄,如果登錄的話用戶名又是多少。
Cookies
cookie 是一小段文本信息,伴隨用戶請求,在web服務(wù)器和瀏覽器之間傳遞。用戶每次訪問站點的時候,
web應(yīng)用程序都可以讀取cookie包含的信息。
假設(shè)在用戶請求您的網(wǎng)站的某個頁面時,您的應(yīng)用程序不僅是返回請求的頁面。同時也返回一個包含日期
和時間的cookie。用戶的瀏覽器在獲得頁面的同時也獲得了cookie.并且cookie保存在客戶端的cookie文件夾中。
指定cookie的名字和要保存的值。可以創(chuàng)建多個,但每個cookie的名字必須唯一,以便日后取值時識別。(cookie是按名字儲存的,要創(chuàng)建兩個名稱相同的cookie,那么最后那個cookie將覆蓋前一個。)同時可以給cookie指定過期日期和時間.cookie是寫入到用戶硬盤上的,然后可能一直都留在磁盤上。因此,指定cookie的過期日期和時間。當(dāng)用戶下次訪問站點的時候,瀏覽器會先檢查您站點的所有cookie,如果某個cookie已經(jīng)過期,瀏覽器不會把這個cookie隨頁面請求一起發(fā)送給服務(wù)器,而是刪除。
cookie 和session 的區(qū)別:
1、cookie數(shù)據(jù)存放在客戶的瀏覽器上,session數(shù)據(jù)放在服務(wù)器上。
2、cookie不是很安全,別人可以分析存放在本地的COOKIE并進(jìn)行COOKIE欺騙
考慮到安全應(yīng)當(dāng)使用session
3、session會在一定時間內(nèi)保存在服務(wù)器上。當(dāng)訪問增多,會比較占用你服務(wù)器的性能
考慮到減輕服務(wù)器性能方面,應(yīng)當(dāng)使用COOKIE
4、單個cookie在客戶端的限制是3K,就是說一個站點在客戶端存放的COOKIE不能3K。
相關(guān)文章
asp.net訪問網(wǎng)絡(luò)路徑方法(模擬用戶登錄)
這篇文章主要介紹了asp.net訪問網(wǎng)絡(luò)路徑方法,其實就是模擬用戶登錄,需要的朋友可以參考下2014-08-08
ASP.NET Gridview 中使用checkbox刪除的2種方法實例分享
ASP.NET Gridview 中使用checkbox刪除的2種方法實例分享,需要的朋友可以參考一下2013-06-06
創(chuàng)建一個ASP.NET MVC5項目的實現(xiàn)方法(圖文)
這篇文章主要介紹了創(chuàng)建一個ASP.NET MVC 5項目,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
ASP.NET Core項目結(jié)構(gòu)教程(4)
這篇文章主要為大家詳細(xì)介紹了ASP.NET Core項目結(jié)構(gòu),具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-06-06
使用VS2022在ASP.NET?Core中構(gòu)建輕量級服務(wù)
本文詳細(xì)講解了使用VS2022在ASP.NET?Core中構(gòu)建輕量級服務(wù)的方法,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-12-12
ASP.NET中DataTable與DataSet之間的轉(zhuǎn)換示例
如果你的數(shù)據(jù)不需要做關(guān)系映射,直接用DataTable效率比較高,下面有個不錯的示例,感興趣的朋友可以參考下2013-09-09

