asp.net 关于SessionId
原文:https://www.cnblogs.com/zhang1999/p/7278020.html 登陆页面使用Session存储验证码,导致会话产生SessionId,从而导致会话固定,登陆后用来存储用户信息的SessionId不变,容易被利用 //强行销毁当前用户的所有会话内容,但是只有加载页面的时候有效,导致登陆后没有用户信息 HttpContext.Current.Session.Abandon() HttpContext.Current.Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId","")) 改用Cookie存储 1.Cookie对象 (1).写入Cookie对象 HttpCookie cookie = new HttpCookie("data"); 注:定义cookie,name属性为data。 cookie.Values.Add("name","123"); 注:cookie是以键值对的方式存储。 cookie.Expires = DateTime.Now.AddYears(2); 注:过期时间设置为2年,也可以不设置过期时间,如果不设置cookie在浏览器关闭是自动清除。 Response.Cookies.Add(cookie); 注:写入Response对象。 (2).读取Cookie对象 HttpCookie cookie = Request.Cookies["data"]; 注:获取name属性为data的cookie if(cookies !=null &&Cookies.HasKeys) 注:判断cookie是否存在 { string s = cookies["name"]; 注:根据name键获取值 Response.Write(s); } 2.Session对象 Session的定义和读取相对比Cookie容易 ? (1).定义Session对象 Session["Itemsession"] = "abc"; 注:Session的值为"abc",Session的类型是object所以可以赋任何类型。 (2).读取Session对象 string s =(string)Session["Itemsession"] ; 注:读取时的类型,要和定义时的类型一致。 Response.Write(s); (3).Session特点 同一台电脑的同一个浏览器表示同一次会话,不同的浏览器表示不同的会话。 同一台电脑的同一个浏览器只能有一个Session。 Session的过期时间是在浏览器关闭时自动清除或用户不进行任何活动20分钟Session也会自动清除。 3.Cookie和Session的不同点和相同点 (1).相同点 Cookie对象和Session对象作用是在窗体之间传值。 等等 (2).不同点 Cookie将状态保存在客户端,Session将状态保存在服务器端。 Session相对Cookie,Session的安全性更高。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – AsyncPostBackTrigger找不到LinkBut??ton
- kendo-ui – 如何使用它的ASP MVC Complete Wrapper设置Ken
- asp.net-mvc – 使用ASP.NET MVC 2 AsyncController实现长时
- asp.net-mvc-4 – 如何从Glimpse获取时间轴数据进行报告?
- asp.net – 如何使用窗口身份验证获取电子邮件地址
- 配置文件_自定义section标签获取数据
- asp.net-mvc – Controller如何知道MVC中DeleteConfirmed的
- asp.net – IIS Web Garden中的Singleton对象
- ASP.NET MVC和FubuMVC之间的主要区别是什么?
- asp.net-mvc-3 – 为什么会话是ASP.NET MVC应用程序的灾难?
- asp.net-mvc – Asp.Net核心MVC6如何最初在Ident
- asp.net – 如何设置显示内联的Div元素的固定宽度
- asp.net-core – 在.net Core中使用NPoco
- asp.net – 是否允许使用manifest.json的相对路径
- 获取所选的输入类型单选按钮ASP.NET
- 在ASP.NET Identity 2.0.0-beta1中禁用双因素身份
- asp.net-mvc – Razor嵌套WebGrid
- asp.net – Sub Page_Init方法:找不到事件init
- asp.net-mvc – 控制器名称是否来自类名?
- 为什么在ASP .Net MVC应用程序中使用SignalR 2.x