服務(wù)熱線
153 8323 9821
為什么點(diǎn)擊安全退出就退出不了呢?只有關(guān)閉瀏覽器才能退出,郁悶!一般不就是清除COOKIES、SESSION什么的嗎?這誰都知道!新了解User.Identity.Name。
頁面代碼:
if (!this.IsPostBack)
{
//判斷用戶是否登錄
if (Session["UserGrade"]==null)
Session["UserGrade"]=DBOperate.GetUserGrade(User.Identity.Name);
Lbl_UserGrade.Text="用戶級(jí)別:"+ Session["UserGrade"].ToString();
if ((User.Identity.Name==null)||(User.Identity.Name==""))
{
Lbl_UserName.Text="當(dāng)前用戶:過客";
}
else
{
Lbl_UserName.Text="當(dāng)前用戶:"+User.Identity.Name.ToString();
}
}
安全退出按鈕代碼:
FormsAuthentication.SignOut();
Session.Abandon();
Session.Clear();
Response.Cookies.Clear();
Response.Buffer = true;
Response.ExpiresAbsolute = System.DateTime.Now.AddSeconds(-1);
Response.Expires = 0;
Response.CacheControl = "no-cache";
Response.Redirect("default.aspx");
再怎么寫,點(diǎn)擊都退出不了,除了關(guān)閉瀏覽器;這怎么改?不可能說安全退出就要關(guān)閉瀏覽器才行吧?
回答:
我不推薦用session來保持狀態(tài),它的好處不說了,不好的地方我說說;
一,它是會(huì)話級(jí)的變量,當(dāng)前會(huì)話結(jié)束,就消失了,不能永久保留信息,如購(gòu)物車中的用戶查閱商品的情況,這些信息沒有什么安全性方面的考慮,為了用戶方便,最好長(zhǎng)時(shí)間保留下來;
二、占用內(nèi)存資源;你用人家的服務(wù)器,人家不會(huì)讓你太占用資源的;
三、當(dāng)采用web園時(shí),或webfarm時(shí),會(huì)出一些問題,這個(gè)我解釋一下,當(dāng)你的網(wǎng)站流量大時(shí),你不得不采用多臺(tái)服務(wù)器,用來負(fù)載平衡,舉例,當(dāng)我登錄時(shí),我的請(qǐng)求分配到了第一服務(wù)器,登錄完,session生成了,當(dāng)我操作時(shí),我的請(qǐng)求到了第一服務(wù)器,結(jié)果它太忙了,就把我分到了第二臺(tái)服務(wù)器,第二臺(tái)服務(wù)器的內(nèi)存中有我的session嗎?沒有,于是,系統(tǒng)認(rèn)為我沒有登錄,暈死吧;
我建議用cookies,各大網(wǎng)站也是采用它來保持狀態(tài)的,當(dāng)然,它有安全問題,在創(chuàng)建cookies時(shí),最好采用加密手段,這個(gè)我就不說了;
如果安全性要求很高,像銀行系統(tǒng),那就得下載個(gè)插件到客戶端了;session也靠不住的。
cookies的工作原理和session差不多,操作方式也差不多,不同是cookies的值存在客戶端,而session的值是存在服務(wù)器端;但是,它們都有一個(gè)鍵值在客戶端,這是沒有辦法的事情,否則像sesion,當(dāng)用戶登錄后,如果客戶沒有留一點(diǎn)兒信息,服務(wù)器根本不會(huì)知道請(qǐng)求來自哪里。
我建議采用cookies來保持狀態(tài),這也是我的習(xí)慣。cookies的時(shí)效可以設(shè)很長(zhǎng),或是直到永遠(yuǎn),呵呵,