最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Asp.net中安全退出時(shí)清空Session或Cookie的實(shí)例代碼

 更新時(shí)間:2016年11月30日 09:51:15   作者:小離子  
網(wǎng)站中點(diǎn)擊退出,如果僅僅是重定向到登錄/出頁(yè)面,此時(shí)在瀏覽器地址欄中輸入登錄后的某個(gè)頁(yè)面地址如主頁(yè),你會(huì)發(fā)現(xiàn)不用登錄就能訪問,這種退出并不安全了,下面通過本文給大家介紹安全退出時(shí)清空Session或Cookie的實(shí)例代碼

概覽:

網(wǎng)站中點(diǎn)擊退出,如果僅僅是重定向到登錄/出頁(yè)面,此時(shí)在瀏覽器地址欄中輸入登錄后的某個(gè)頁(yè)面地址如主頁(yè),你會(huì)發(fā)現(xiàn)不用登錄就能訪問。這種所謂的退出并不是安全的。

那么怎樣做到安全退出呢?

那就是點(diǎn)擊退出后清空相應(yīng)的Session或Cookie。

清空Session的代碼:

Session.Clear();
Session.Abandon();

清除Cookie的正確代碼(假設(shè)Cookie名稱為UserInfo):

if (Request.Cookies["UserInfo"] != null)
{
Response.Cookies["UserInfo"].Expires = DateTime.Now.AddDays(-1);
}

如果需要清除所有Cookie,則遍歷:

for (int i = 0; i <Response.Cookies.Count; i++)
{
Response.Cookies[i].Expires = DateTime.Now.AddDays(-1);
}

清除Cookie的錯(cuò)誤代碼(假設(shè)Cookie名稱為UserInfo):

if (Request.Cookies["UserInfo"] != null)
{
Response.Cookies.Remove("UserInfo");
}

你會(huì)發(fā)現(xiàn),這樣處理后,Cookie依然存在,為什么就是刪不掉呢?我們?nèi)タ纯?NET的HttpCookieCollection實(shí)現(xiàn)源碼:

public void Remove(string name)
{
if (this._response != null)
{
this._response.BeforeCookieCollectionChange();
}
this.RemoveCookie(name);
if (this._response != null)
{
this._response.OnCookieCollectionChange();
}
}

這個(gè)操作在HttpCookieCollection這個(gè)集合里面刪除了cookie,當(dāng)服務(wù)器將數(shù)據(jù)傳輸?shù)娇蛻舳说臅r(shí)候,不會(huì)包含這個(gè)已經(jīng)在服務(wù)端刪除了的Cookie的任何信息,瀏覽器也就不會(huì)對(duì)它做任何改變(remove方法只是不讓服務(wù)器向客戶機(jī)發(fā)送那個(gè)被刪除的cookie,與此cookie留不留在客戶機(jī)里無(wú)關(guān))。所以cookie刪除不掉的情況就出現(xiàn)。

既然Response.Cookies.Remove沒有辦法實(shí)現(xiàn)我們需要的效果,為什么微軟還有留著呢,因?yàn)镃ookieCollection實(shí)現(xiàn)ICollection接口,romove是必須實(shí)現(xiàn)的方法,盡管它沒多大的實(shí)際價(jià)值。而集合的romove也應(yīng)該是這樣的實(shí)現(xiàn)方式,只不過微軟在寫MSDN的時(shí)候,描述得太不清楚了,給我們?cè)斐闪瞬恍〉穆闊?/p>

下面就總結(jié)下實(shí)現(xiàn)安全退出的幾種方式:

1).用Linkbutton,Button等服務(wù)器控件實(shí)現(xiàn)退出

這種方式最好處理:直接在服務(wù)器控件對(duì)應(yīng)的事件里編寫清空Session或Cookie的代碼即可。

2).用<a>注銷</a>等HTML標(biāo)記實(shí)現(xiàn)退出

對(duì)于<a></a>這個(gè)特殊標(biāo)記,可以這樣實(shí)現(xiàn): <a href="logout.aspx">注銷</a> ,在logout.aspx的Page_Load事件中編寫清空Session或Cookie的代碼即可。

對(duì)于<a></a>等HTML標(biāo)記,可以在HTML標(biāo)記的相應(yīng)client事件中用Js-Ajax,或者jQuery-Ajax,在一般處理程序(.ashx)中編寫清空Session或Cookie的代碼即可。

對(duì)于<a></a>等HTML標(biāo)記,還可以這樣:在當(dāng)前頁(yè)面添加一個(gè)服務(wù)器控件如Button,用div包含,并讓其隱藏(注意:隱藏不可見,不能通過服務(wù)器屬性Visible=False,只能通過設(shè)置div的display:none;來(lái)實(shí)現(xiàn)),在Button的服務(wù)器事件Cilck里編寫清空Session或Cookie的代碼;然后在HTML標(biāo)記的相應(yīng)client事件中用Js或者jQuery調(diào)用Button控件的Click事件即可(通過服務(wù)器屬性Visible=False設(shè)置Button隱藏,Js或者jQuery調(diào)用Button控件的Click事件將失效)。

以上所述是小編給大家介紹的Asp.net中安全退出時(shí)清空Session或Cookie的實(shí)例代碼,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

最新評(píng)論

东莞市| 昌都县| 馆陶县| 平江县| 穆棱市| 弋阳县| 富平县| 兴海县| 广德县| 泸水县| 四会市| 腾冲县| 鹤庆县| 杭锦后旗| 元谋县| 宜丰县| 习水县| 磐安县| 定边县| 娄底市| 吴江市| 汾阳市| 根河市| 社旗县| 宜州市| 海淀区| 阳信县| 探索| 三原县| 玉环县| 舒兰市| 巩义市| 珠海市| 襄樊市| 大理市| 丰宁| 武城县| 吉林市| 大同县| 南漳县| 元谋县|