.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的值呢?這里要注意一點(diǎn),在COOKIES沒有被賦值時,你要調(diào)用就會出錯,所以我們一般在調(diào)用之前會先判斷一下,此COOKIES是否存在,方法:
if (Request.Cookies["uid"] != null)
{
string ruid = Request.Cookies["uid"].Value;
}
在.NET里獨(dú)有的賦值方法:
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)對某一個站點(diǎn)的一次訪問。
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 請求作為獨(dú)立的請求進(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ù)器和瀏覽器之間傳遞。用戶每次訪問站點(diǎn)的時候,
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)用戶下次訪問站點(diǎn)的時候,瀏覽器會先檢查您站點(diǎn)的所有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,就是說一個站點(diǎn)在客戶端存放的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的值呢?這里要注意一點(diǎn),在COOKIES沒有被賦值時,你要調(diào)用就會出錯,所以我們一般在調(diào)用之前會先判斷一下,此COOKIES是否存在,方法:
復(fù)制代碼 代碼如下:
if (Request.Cookies["uid"] != null)
{
string ruid = Request.Cookies["uid"].Value;
}
在.NET里獨(dú)有的賦值方法:
復(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)對某一個站點(diǎn)的一次訪問。
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 請求作為獨(dú)立的請求進(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ù)器和瀏覽器之間傳遞。用戶每次訪問站點(diǎn)的時候,
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)用戶下次訪問站點(diǎn)的時候,瀏覽器會先檢查您站點(diǎn)的所有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,就是說一個站點(diǎn)在客戶端存放的COOKIE不能3K。
相關(guān)文章
ASP.NET(VB)寫的后臺發(fā)送短信實現(xiàn)代碼
使用vb寫的后臺發(fā)送短信代碼,很實用的一項功能,感興趣的朋友可以了解下,或許對你學(xué)習(xí)asp.net vb有所幫助2013-02-02ASP.NET Core Zero使用Power Tool工具
這篇文章介紹了ASP.NET Core Zero使用Power Tool工具的方法,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-02-02asp.net GridView 刪除時彈出確認(rèn)對話框(包括內(nèi)容提示)
GridView 刪除時彈出確認(rèn)對話框(包括內(nèi)容提示)2009-12-12在ASP.NET2.0中通過Gmail發(fā)送郵件的代碼
我們有時候需要發(fā)送郵件給訪問網(wǎng)頁的用戶,例如,注冊的時候,發(fā)一確認(rèn)信什么的。那么,在ASP.NET2.0中該如果操作呢?2008-06-06asp.net LINQ中數(shù)據(jù)庫連接字符串的問題
這兩天一直在用LINQ做開發(fā),也是第一次嘗試用LINQ做開發(fā),效率沒的說,開發(fā)過程中遇到一個問題困擾了我好久,今天問題終于解決了,發(fā)上來和大家分享一下,也給自己做個備忘。2010-03-03