通过Cookie存放⽤户登录信息以及安全性问题
场景
⼀个系统中需要⽤户登录,当⽤户登录之后,⽤⼀个全局变量存放⽤户信息,当⽤户执⾏⼀些Action的时候,需要先验证⽤户信息是否存在,如果存在则往下执⾏⽅法,如果不存在则跳转到登录界⾯。当⽤户点击退出系统或者关闭浏览器的时候,⽤户信息将被清除。
采⽤Cookies存放⽤户信息
当⽤户进⼊登录界⾯,⾸先检测⽤户名密码是否正确,然后将信息存放到Cookies中
Response.Cookies["username"].Value = username;
退出系统时,则将Cookies的时间设置为负数,则Cookies则会被清除
javascript登录注册界面Response.Cookies["username"].Expires = DateTime.Now.AddDays(-1);
这⾥要注意⼀下,我之前对Cookies设置了存活时间(这也是接触Cookies时候给⾃⼰留下的⼀个固话概念,Cookies就需要设置时长),我关闭了浏览器之后,我仍可以直接输⼊相关的Action的url,跳过登录步骤,也就是说Cookies还未清除。
原因是如果⼀个Cookies没有设置时间,则该Cookies是加载到内存中,当关闭浏览器时,Cookies也将清除;如果设置了时间,则会将Cookies存储到⼀个⽂件中,只要时间没到,即使关闭了浏览器,Cookies信息仍然存在。
这样做了之后,点击退出系统,以及点击关闭浏览器都能成功将Coolies信息清除,如果直接输⼊系统内部的url是⽆法进⼊,并跳转到登录界⾯。
但是存在⼀个问题,如果⽤户关闭页⾯,浏览器仍然未关闭,Cookies信息还是没有清除,这时候还是可以直接输⼊url并成功进⼊。
因此,我想到⽤javascript来监听关闭页⾯,在javascript中清除Cookies信息的⽅法。
第⼀步:绑定窗⼝关闭⽅法:
$(window).bind('beforeunload', function () {
DelCookie("username");
});
第⼆步:
通过kie⽅法获取所有cookies,根据key来得到需要删除的cookie,将该cookie设置截⽌时间为负数即可
function GetCookieValue(name) {
var cookieValue = null;
if (kie && kie != '') {
var cookies = kie.split(';');
for (var i = 0; i < cookies.length; i++) {
var cookie = im(cookies[i]);
if (cookie.substring(0, name.length + 1) == (name + '=')) {
cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
break;
}
}
}
return cookieValue;
}
function DelCookie(name) {
var exp = new Date();
exp.Time() + (-1 * 24 * 60 * 60 * 1000));
var cval = GetCookieValue(name);

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。