日韩天天综合网_野战两个奶头被亲到高潮_亚洲日韩欧美精品综合_av女人天堂污污污_视频一区**字幕无弹窗_国产亚洲欧美小视频_国内性爱精品在线免费视频_国产一级电影在线播放_日韩欧美内地福利_亚洲一二三不卡片区

ASP.NET 狀態(tài)的傳遞和保存_.Net教程

編輯Tag賺U幣
教程Tag:暫無Tag,歡迎添加,賺取U幣!

  1,HTTP協(xié)議是無狀態(tài)的。服務(wù)器不會記住上次給瀏覽器的處理結(jié)果,如果需要上次處理結(jié)果(上次狀態(tài))就需要瀏覽器把處理結(jié)果值(上次狀態(tài))再次給服務(wù)器。

  2,URL傳值:通過URL參數(shù)或者通過Form表單進(jìn)行頁面件的傳值 (不能做到很自由的存取和讀取,而且不安全)

  3,Cookie :①Cookie可以用來進(jìn)行更加自由的數(shù)據(jù)的存取和讀取。

 �、贑ookie是和站點相關(guān)的,自己域名寫的只有自己的域名才可以讀取。

 �、劭蛻舳讼蚍⻊�(wù)器發(fā)送請求的時候 處理發(fā)送Form表單信息以外還會把和站點有關(guān)的所有的Cookie發(fā)送給服務(wù)器,是強制的。

  ④服務(wù)器返回的數(shù)據(jù)處理HTML數(shù)據(jù)以外,還會返回修改的Cookie,瀏覽器拿到修改后的Cookie更新到本地的Cookie

 �、莘⻊�(wù)器端使用Cookie案例,記住用戶名功能:

  A,設(shè)置頁面值: Response.SetCookie(new HttpCookie("UserName",username))

  B,讀取頁面值: username=Request.Cookies["UserName"].Value

 �、逓g覽器關(guān)閉以后Cookie的聲明周期到期,也就是Cookie的默認(rèn)生命周期是瀏覽器的生命周期�?梢酝ㄟ^設(shè)置Expires屬性設(shè)置Cookie的過期時間:Cookie.Expires=DateTime.Now.AddDays(-1)

 �、逤ookie在客戶端是以鍵值對存在的

  4,Cookie缺點:①客戶端額可以手動清楚Cookie 所以Cookie里面存放的信息是可有可無的信息

 �、跒g覽器對 Cookie 的大小有限制,因此只有不超過 4096 字節(jié)才能保證被接受

 �、蹤C密信息不能放到Cookie里面

 �、蹸ookie不能跨瀏覽器

  5,Cookie的寫和讀: A,新建CookieTest.html頁面并添加 兩個按鈕分別用于Cookie的讀和寫

  <!DOCTYPE html>

  <html xm lns="http://www.w3.org/1999/xhtml">

  <head>

  <me ta http-equiv="Content-Type" content="text/html; charset=utf-8" />

  <title></title>

  </head>

  <body>

  <form>

  <in put type="submit" name="Read" value="讀取Cookie" /> 

  <in put type="submit" name="Write" value="寫入Cookie" />

  <br />

  讀取出來的Cookie: $Model.CookieValue

  </form>

  </body>

  </html>

  B,建立對應(yīng)的CookieTest.ashx頁面 實現(xiàn)Cookie的新建寫入本地以及讀取Cookie的值

  using System;

  using System.Collections.Generic;

  using System.Linq;

  using System.Web;

  namespace HttpNoStatus

  {

  /// <summary>

  /// HttpCookie 的摘要說明

  /// </summary>

  public class CookieTest : IHttpHandler

  {

  public void ProcessRequest(HttpContext context)

  {

  context.Response.ContentType = "text/html";

  //if else 判斷是點擊的那個按鈕

  if (!string.IsNullOrEmpty(context.Request["Read"]))

  {

  if (context.Request.Cookies["Age"] != null)

  {

  HttpCookie cookie = context.Request.Cookies["Age"];

  string strValue = cookie.Value;

  var data = new { CookieValue = strValue };

  //加載模板頁面并傳遞 Cookie Value的值

  string strHtml = Common_Nvelocity.RenderHTML("CookieTest.html", data);

  context.Response.Write(strHtml);

  }

  else

  {

  context.Response.Write("cookie 不存在");

  }

  }

  else if (!string.IsNullOrEmpty(context.Request["Write"]))

  {

  //寫入新的Cookie

  HttpCookie acookie = new HttpCookie("Age");

  acookie.Value = "25";

  acookie.Expires = DateTime.MaxValue;

  context.Response.Cookies.Add(acookie);

  //Cookie不存在 直接加載模板頁面

  string strHtml = Common_Nvelocity.RenderHTML("CookieTest.html", null);

  context.Response.Write(strHtml);

  }

  else

  {

  //第一次加載頁面

  string strHtml = Common_Nvelocity.RenderHTML("CookieTest.html", null);

  context.Response.Write(strHtml);

  }

  }

  public bool IsReusable

  {

  get

  {

  return false;

  }

  }

  }

  }

  6,Cookie最主要的一個功能是保存用戶的登陸名,這樣用戶在下次登陸的時候系統(tǒng)就可以自動填寫登陸名稱

  A,新建LoginCookie.html頁面,頁面中添加我們經(jīng)常見到的 用戶名,用戶密碼,登陸

  登陸頁面第一次加載的時候,設(shè)置默認(rèn)的登陸名為空,登陸成功以及再次登陸的時候系統(tǒng)就自動補充登陸用戶名

  <!DOCTYPE html>

  <html xm lns="http://www.w3.org/1999/xhtml">

  <head>

  <me ta http-equiv="Content-Type" content="text/html; charset=utf-8" />

  <title></title>

  </head>

  <body>

  <form action="LoginCookie.ashx" method="post">

  <table>

  <tr>

  <td>登陸名</td>

  <td>

  <in put type="text" name="UserName" value="$Model.LoginUser" /></td>

  </tr>

  <tr>

  <td>密碼</td>

  <td>

  <in put type="password" name="Password" /></td>

  </tr>

  <tr>

  <td>

  <in put type="submit" name="Login" value="登陸" /></td>

  <td></td>

  </tr>

  </table>

  </form>

  </body>

  </html>

  B, 新建對應(yīng)的LoginCookie.ashx頁面,實現(xiàn)把用戶名讀取出來并寫入Cookie "ckLoginUser"

  using System;

  using System.Collections.Generic;

  using System.Linq;

  using System.Web;

  namespace HttpNoStatus

  {

  /// <summary>

  /// LoginCookie 的摘要說明

  /// </summary>

  public class LoginCookie : IHttpHandler

  {

  public void ProcessRequest(HttpContext context)

  {

  context.Response.ContentType = "text/html";

  //加載頁面直接顯示 頁面

  if (context.Request.Form["Login"] == null)

  {

  string strHtml = "";

  var data = new { LoginUser = "" }; //登陸賬號默認(rèn)為空

  //判斷Cookie是否存在,如果存在 把Cookie的值傳遞到HTML頁面,如果不存在就是默認(rèn)的空

  if (context.Request.Cookies["ckLoginUser"] != null)

  {

  data = new { LoginUser = context.Request.Cookies["ckLoginUser"].Value.ToString() };

  }

  strHtml = Common_Nvelocity.RenderHTML("LoginCookie.html", data);

  context.Response.Write(strHtml);

  }

  else

  {

  //用戶登陸,保存用戶名到Cookie

  HttpCookie LoginUser = new HttpCookie("ckLoginUser");

  LoginUser.Value = context.Request.Form["UserName"];

  LoginUser.Expires = DateTime.Now.AddDays(30);

  context.Response.Cookies.Add(LoginUser);

  //加載頁面直接顯示 頁面

  string strHtml = Common_Nvelocity.RenderHTML("LoginCookie.html", new { LoginUser = context.Request.Form["UserName"] });

  context.Response.Write(strHtml);

  }

  }

  public bool IsReusable

  {

  get

  {

  return false;

  }

  }

  }

  }

  7,以上方法把登陸賬號以Cookie的形式存放在客戶端,這樣每一次的請求就可以帶出用戶登陸名稱了

  有一種情況: 用戶登陸成功以后就可以訪問網(wǎng)站的其他所有頁面,其他頁面就需要先判斷用戶是否登陸成功。

  如果登陸成功為True放到Cookie中,這樣的客戶端就可以進(jìn)行篡改把False改為True從而可以非法訪問為授權(quán)頁面了,這樣放到Cookie就不安全了。

  如果登陸成功放到服務(wù)器端,那么網(wǎng)站的多個頁面就可以直接讀取到這個值,而且是安全的不會被客戶端篡改的了。

共2頁上一頁12下一頁
來源:模板無憂//所屬分類:.Net教程/更新時間:2015-08-10
相關(guān).Net教程