概览:

网站中点击退出,如果仅仅是重定向到登录/出页面,此时在浏览器地址栏中输入登录后的某个页面地址如主页,你会发现不用登录就能访问。这种所谓的退出并不是安全的。

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

那就是点击退出后清空相应的Session或Cookie。

清空Session的代码:

Session.Clear();

Session.Abandon();

清除Cookie的正确代码(假设Cookie名称为UserInfo):

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

{

Response.Cookies["UserInfo"].Expires = DateTime.Now.AddDays(-1);

}

如果需要清除所有Cookie,则遍历:

for (int i = 0; i

{

Response.Cookies[i].Expires = DateTime.Now.AddDays(-1);

}

清除Cookie的错误代码(假设Cookie名称为UserInfo):

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

{

Response.Cookies.Remove("UserInfo");

}

你会发现,这样处理后,Cookie依然存在,为什么就是删不掉呢?我们去看看.NET的HttpCookieCollection实现源码:

public void Remove(string name)

{

if (this._response != null)

{

this._response.BeforeCookieCollectionChange();

}

this.RemoveCookie(name);

if (this._response != null)

{

this._response.OnCookieCollectionChange();

}

}

这个操作在HttpCookieCollection这个集合里面删除了cookie,当服务器将数据传输到客户端的时候,不会包含这个已经在服务端删除了的Cookie的任何信息,浏览器也就不会对它做任何改变(remove方法只是不让服务器向客户机发送那个被删除的cookie,与此cookie留不留在客户机里无关)。所以cookie删除不掉的情况就出现。

既然Response.Cookies.Remove没有办法实现我们需要的效果,为什么微软还有留着呢,因为CookieCollection实现ICollection接口,romove是必须实现的方法,尽管它没多大的实际价值。而集合的romove也应该是这样的实现方式,只不过微软在写MSDN的时候,描述得太不清楚了,给我们造成了不小的麻烦。

下面就总结下实现安全退出的几种方式:

1).用Linkbutton,Button等服务器控件实现退出

这种方式最好处理:直接在服务器控件对应的事件里编写清空Session或Cookie的代码即可。

2).用注销等HTML标记实现退出

对于这个特殊标记,可以这样实现:注销 ,在logout.aspx的Page_Load事件中编写清空Session或Cookie的代码即可。

对于等HTML标记,可以在HTML标记的相应client事件中用Js-Ajax,或者jQuery-Ajax,在一般处理程序(.ashx)中编写清空Session或Cookie的代码即可。

对于等HTML标记,还可以这样:在当前页面添加一个服务器控件如Button,用div包含,并让其隐藏(注意:隐藏不可见,不能通过服务器属性Visible=False,只能通过设置div的display:none;来实现),在Button的服务器事件Cilck里编写清空Session或Cookie的代码;然后在HTML标记的相应client事件中用Js或者jQuery调用Button控件的Click事件即可(通过服务器属性Visible=False设置Button隐藏,Js或者jQuery调用Button控件的Click事件将失效)。

以上所述是小编给大家介绍的Asp.net中安全退出时清空Session或Cookie的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

html点击按钮删除session,Asp.net中安全退出时清空Session或Cookie的实例代码相关推荐

  1. html点击按钮弹出悬浮窗_JS控制弹出悬浮窗口(一览画面)的实例代码

    在web项目开发中经常遇到在一览画面中用户需要查看某一条记录的详细信息.如果用迁移画面的方式处理,速度会比较慢,而且用户体验不是太好.如果采用点击该条记录的详细链接时弹出一个层显示在当前画面的话,处理 ...

  2. 点击按钮删除并传递参数 html引入字体文件并显示

    1.点击按钮删除并传递参数 第一种形式: html代码: <ul><li>{$addr.consignee}</li><li class="pro& ...

  3. asp.net中上传图片并生成小图片,自动添加水印的代码 .

    asp.net中上传图片并生成小图片,自动添加水印的代码 分类: .Net(C#) 2010-03-22 15:28 242人阅读 评论(0) 收藏 举报 /// 上传图片生成缩略图及水印 (来自:h ...

  4. 退出登录清空session

    退出登录清空session如何从前台到后台 前台页面 获取项目路径 <% String path = request.getContextPath(); %> 页面退出按钮 <a h ...

  5. 网页加载的不同的方式、点击按钮显示一句话、jQuery中获取元素的方法

    网页加载的不同的方式 <!DOCTYPE html> <html lang="en"> <head><meta charset=" ...

  6. 退出登录时清空session中的数据

    在完成退出登录时我之前都只是跳转的login.jsp页面就可以了,但是这样的话会存在非常大的安全隐患,所以在退出的时候我们要先将存在session中的对象等等数据都清空了,再跳转回登录页面,下面是清空 ...

  7. html点击按钮删除session,删除sessionstorage

    session storage怎么清除 session storage可以删除吗 怎么跨标签页存储SessionStorage,或者保证退出清h5本地存储localStorage,sessionSto ...

  8. 点击按钮复制链接(实现点击按钮,复制文本框中的的内容)

    想要的效果是,点击复制链接的按钮,然后就把事先准备好的链接复制上,然后crtr+v就能黏贴出来 我实在react的项目中使用的 // 复制链接方法 copyUrl() {let inputText = ...

  9. javascript : 点击按钮,把某标签中的内容复制到剪贴板

    需求如题. 静态页面如下. 需要的库:jquery(不用应该也能做). 浏览器:PC chrome 68 Mobile MIUI9.5(Android 7) <p>1.用电脑打开网址:&l ...

最新文章

  1. php mongodb execute,php简单操作mongodb
  2. mysql每学科前两名 having_mysql 分组查询前n条数据
  3. 中班音乐 机器人教案_幼儿园中班音乐活动教案《机器人》
  4. 阿里P7工作总结:Spring MVC的工作原理,看完受益匪浅
  5. MATLAB 求曲线长度
  6. Charles抓包工具安装与配置
  7. osg多线程_尝试使用Osg编译上下文实现多线程编译显示列表--总结
  8. 2022-04-25 安装PostgreSQL的发现小bug
  9. 南阳oj 814 又见拦截导弹
  10. 关于 Java 数组的 12 个最佳方法
  11. ei加声调怎么加_微商怎么加好友找客源实操篇
  12. 记录mikrotik路由器的折腾过程
  13. 利用公网Msf+MS17010跨网段攻击内网(不详细立马关站)
  14. 开学季Web渗透测试工程师精英班“第5期”来袭,加入即永久观看!
  15. python列表偏移量为什么可以有-1_Python颜色条标记的偏移量为+1,而不是指定的值...
  16. 华米科技:庇佑之下,黄汪难设温柔乡
  17. 根据身份证号,获取指定格式出生年月日
  18. 各大自媒体平台的收益情况汇总
  19. android 修改aar包资源文件的最简单方法
  20. 学习Java可以从事哪些工作

热门文章

  1. Prokka:快速原核基因组、宏基因组基因注释
  2. QIIME 2用户文档. 5粪菌移植分析练习Fecal microbiota transplant (FMT) study
  3. Nature:人工甜味剂改变小鼠肠道菌群组成及功能
  4. R语言data.table导入数据实战:data.table中编写函数并使用SD数据对象
  5. R语言使用str_remove函数和str_remove_all函数删除模式匹配的字符串:str_remove函数删除第一个模式匹配的字符串、str_remove_all函数删除所有模式匹配的字符串
  6. R语言head函数和tail函数获取dataframe、列表list、向量vector的头部和尾部数据:tail提取数据对象的尾部数据、head提取数据对象的头部数据、默认6条数据、自定义设置返回条数
  7. R语言可视化包ggplot2包设置轴断点位置实战(Axis Breaks)、即自定义X轴和Y轴的数值标记位置
  8. python基于tpot训练模型并抑制输出stackingestimator、而是输出单模型例如xgboost设置
  9. python读写压缩文件使用gzip和bz2
  10. gif加文字 php,gif动态图片添加文字 gif制作软件 怎样给gif动态图片添加文字