ASP.NET中Cookie的使用(實戰教程)

來源:互聯網
上載者:User

      學習web開發,使用Cookie是不可避免的,在這就淺顯的總結一下。僅供新手參閱,老鳥路過。個人感覺Cookie的使用和ASP.NET中的Session非常像,只不過Cookie是儲存在用戶端,而Session是在伺服器端,兩者都以記錄資訊為目的,作為訪問網站的憑據。本文僅僅是實踐操作,不涉及理論知識。

      本來想畫個思維導圖,但是想想還是算了,我不太喜歡在部落格中貼一個讓人眼花繚亂的思維導圖,而且思維導圖以圖片的形式存在也不利於知識的傳播。實際操作之前簡單的講一下Cookie吧!

      Cookie其實就是一些儲存在用戶端的小檔案,為下次訪問網站時儲存一些資訊,比如:是否登入。Cookie的最大優點就是使用簡單,傳遞、管理、維護都由瀏覽器完成;缺點是不安全、大小有限制、受瀏覽器安全性設定限制。剛剛提到Cookie實際上是一些小檔案,這些檔案肯定是用來儲存資訊的,那麼這些小檔案在哪裡呢?這要分情況而言,如果伺服器建立的是非持久性Cookie,那麼這些檔案儲存在瀏覽器的記憶體中,一旦完全關閉瀏覽器,Cookie便失效了;如果伺服器建立的是持久性Cookie,那麼這些檔案就被存放在:C:\你的使用者名稱\Default\AppData\Roaming\Microsoft\Windows\Cookies,直接把正確的路徑複製到資源管理員地址欄斷行符號訪問即可,不要手動尋找,那樣是找不到的(即使顯示了隱藏檔案,也找不到Cookies檔案夾),這些Cookie檔案以文字文件的形式儲存在這裡,所以安全性就可想而知了。在程式中,如果我們設定Cookie的有效時間,則此Cookie就是持久性Cookie,如果不設定,預設的就是非持久性Cookie。

      需要注意的是:當我們訪問一個頁面時,如果有對應的Cookie,瀏覽器會自動傳遞給伺服器端,伺服器端返回到用戶端的Cookie也由瀏覽器處理,完全不用我們操心;Cookie是可以覆蓋的,如果重複寫入同名的Cookie,那麼將會覆蓋之前的Cookie。

      以下的代碼展示了:“伺服器端如何讀取用戶端的Cookie”、“伺服器端向用戶端寫入非持久性Cookie”、“伺服器端向用戶端寫入持久性Cookie”、“持久性Cookie和非持久性Cookie的區別”、“強制讓有效持久化Cookie失效”。有了上邊的講解,再加上代碼中的詳細注釋,相信讀者一看就會。直接複製以下代碼到vs,可正常運行。


Web前台HTML代碼:

<body>    <form id="frmUp" runat="server" method="post">         <div>            存入\讀取Cookies:<asp:TextBox ID="txtUserName" runat="server"></asp:TextBox>            <asp:Button ID="btnSaveTemp" runat="server" Text="寫入非持久化Cookies"                 onclick="btnSaveTemp_Click" />            <asp:Button ID="btnSaveKeep" runat="server" Text="寫入持久化Cookies"                 onclick="btnSaveKeep_Click" />            <asp:Button ID="btnChangeCookie" runat="server" Text="強制持久化Cookies到期"                 onclick="btnChangeCookie_Click" />            <asp:Button ID="btnRead" runat="server" Text="讀取" onclick="btnRead_Click" />        </div>    </form></body>


Web後台C#代碼:

//頁面載入處理    protected void Page_Load(object sender, EventArgs e)    {        //載入時判斷是否存在Cookies,存在則讀取        HttpCookie login = Request.Cookies["Login"]; //擷取用戶端返回的Cookies中名稱為Login的Cookie對象        if(login != null)        {            txtUserName.Text = login["userName"]; //讀取Login中屬性值        }        else        {            txtUserName.Text = "Cookies無效";        }    }    //伺服器端向用戶端寫入非持久化Cookie    protected void btnSaveTemp_Click(object sender, EventArgs e)    {        HttpCookie tempCookie = new HttpCookie("Login"); //建立一個HttpCookie執行個體,Cookies名稱為Login,執行個體只是一個容器,真正使用的是Cookie名稱        tempCookie["userName"] = "www.kpdown.com"; //向Login中添加一個userName屬性,並賦值        Response.Cookies.Add(tempCookie); //把Cookies對象返回給用戶端    }    //伺服器端向用戶端寫入持久化Cookie    protected void btnSaveKeep_Click(object sender, EventArgs e)    {        HttpCookie keepCookie = new HttpCookie("Login"); //建立一個HttpCookie執行個體,Cookies名稱為Login,執行個體只是一個容器,真正使用的是Cookie名稱        keepCookie["userName"] = "www.kpdown.com"; //向Login中添加一個userName屬性,並賦值        keepCookie.Expires = DateTime.Now.AddDays(2); //設定Cookies的有效期間為兩天        Response.Cookies.Add(keepCookie); //把Cookies對象返回給用戶端    }    //強制讓有效持久化Cookie失效    protected void btnChangeCookie_Click(object sender, EventArgs e)    {        HttpCookie changeCookie = new HttpCookie("Login"); //使名稱為Login的Cookies失效,就把HttpCookie對象的Cookie名稱寫成Login,相當於用新Login覆蓋了舊的Login,Cookie可以覆蓋        changeCookie["userName"] = "www.kpdown.com"; //依然設定屬性值,無法讀取,證明Cookie已經失效        changeCookie.Expires = DateTime.Now.AddDays(-1); //設定Cookies的有效期間為無效時間即可讓該Cookie失效        Response.Cookies.Add(changeCookie);    }    //伺服器端讀取用戶端的Cookie    protected void btnRead_Click(object sender, EventArgs e)    {        HttpCookie login = Request.Cookies["Login"]; //擷取用戶端返回的Cookies中名稱為Login的Cookie對象        if (login != null)        {            txtUserName.Text = login["userName"]; //讀取Login中屬性值        }        else        {            txtUserName.Text = "Cookies無效";        }    }


 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.