您好,欢迎访问一九零五行业门户网

JavaScript中如何使用cookie实现记住密码功能及cookie相关函数介绍

cookie是网站设计者放置在客户端(浏览器)的小文本文件,cookie不仅能够实现保存密码功能,还可以通过cookie保存最近浏览记录增加用户体验。
在登录界面添加记住密码功能,我首先想到的是在java后台中调用cookie存放账号密码,大致如下:
httpservletrequest request httpservletresponse response cookie username = new cookie("username ","cookievalue"); cookie password = new cookie("password ","cookievalue"); response.addcookie(username ); response.addcookie(password );
但是为安全起见,我们在后台获取的密码大多是在js中通过md5加密后的密文,如果将密文放到cookie中,在js中获取到也没有作用;
然后考虑在js中存取cookie,代码如下:
//设置cookie var passkey = '4c05c54d952b11e691d76c0b843ea7f9'; function setcookie(cname, cvalue, exdays) { var d = new date(); d.settime(d.gettime() + (exdays*24*60*60*1000)); var expires = "expires="+d.toutcstring(); document.cookie = cname + "=" + encrypt(escape(cvalue), passkey) + "; " + expires; } //获取cookie function getcookie(cname) { var name = cname + "="; var ca = document.cookie.split(';'); for(var i=0; i<ca.length; i++) { var c = ca[i]; while (c.charat(0)==' ') c = c.substring(1); if (c.indexof(name) != -1){ var cnamevalue = unescape(c.substring(name.length, c.length)); return decrypt(cnamevalue, passkey); } } return ""; } //清除cookie function clearcookie(cname) { setcookie(cname, "", -1); } setcookie(cname, cvalue, exdays)三个参数分别是存放的cookie名字、cookie值、cookie有效天数
由于cookie中不能包含等号、空格、分号等特殊字符,我在设置cookie时使用escape() 函数对字符串进行编码,获取cookie时使用unescape()函数解码。但是escape()函数不会对 ascii 字母和数字进行编码,所以存放到cookie中的账号、密码是以明文存放的,不安全。于是上网找了一个对字符串加密解密算法,该算法需要传两个参数,一个需要加密的字符串,一个自定义加密密钥passkey。设置cookie时使用encrypt(value, passkey)加密,读取cookie时使用decrypt(value, passkey)解密,该算法附在本文最后。
存取cookie方法的调用:
1、定义checkbox
<input type="checkbox" id="rememberme" checked="checked"/>记住密码
2、判断帐号密码输入无误后调用
if($('#rememberme').is(':checked')){ setcookie('customername', $('#username').val().trim(), 7) setcookie('customerpass', $('#password').val().trim(), 7) }
3、进入登录界面后,判断cookie中是否有帐号密码,如果有就自动填充
$(function(){ //获取cookie var cusername = getcookie('customername'); var cpassword = getcookie('customerpass'); if(cusername != "" && cpassword != ""){ $("#username").val(cusername); $("#password").val(cpassword); } }
最后附上字符串加密解密算法
eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseint(c/a)))+((c=c%a)>35?string.fromcharcode(c+29):c.tostring(36))};if(!''.replace(/^/,string)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new regexp('\\b'+e(c)+'\\b','g'),k[c]);return p}('a g(a,b){x(b==v||b.7<=0){d.y("z r p o");t v}6 c="";s(6 i=0;i<b.7;i++){c+=b.u(i).n()}6 d=m.r(c.7/5);6 e=l(c.9(d)+c.9(d*2)+c.9(d*3)+c.9(d*4)+c.9(d*5));6 f=m.m(b.7/2);6 g=m.b(2,c)-1;x(e<2){d.y("l k j z");t v}6 h=m.f(m.h()*n)%i;c+=h;w(c.7>q){c=(l(c.o(0,q))+l(c.o(q,c.7))).n()}c=(e*c+f)%g;6 j="";6 k="";s(6 i=0;i<a.7;i++){j=l(a.u(i)^m.r((c/g)*e));x(j<p){k+="0"+j.n(p)}q k+=j.n(p);c=(e*c+f)%g}h=h.n(p);w(h.7<8)h="0"+h;k+=h;t k}a s(a,b){6 c="";s(6 i=0;i<b.7;i++){c+=b.u(i).n()}6 d=m.r(c.7/5);6 e=l(c.9(d)+c.9(d*2)+c.9(d*3)+c.9(d*4)+c.9(d*5));6 f=m.f(b.7/2);6 g=m.b(2,c)-1;6 h=l(a.o(a.7-8,a.7),p);a=a.o(0,a.7-8);c+=h;w(c.7>q){c=(l(c.o(0,q))+l(c.o(q,c.7))).n()}c=(e*c+f)%g;6 j="";6 k="";s(6 i=0;i<a.7;i+=2){j=l(l(a.o(i,i+2),p)^m.r((c/g)*e));k+=t.u(j);c=(e*c+f)%g}t k}',57,57,'||||||var|length||charat||||||||||||parseint|math|tostring|substring|16|10|floor|for|return|charcodeat|null|while|if|log|key|function|pow|31|console|255|round|encrypt|random|100000000|the|change|plesae|ceil|1000000000|empty|be|else|cannot|decrypt|string|fromcharcode'.split('|'),0,{}))
ps:下面看下js操作cookie的相关函数
//设置cookie函数,三个参数,一个是cookie的名子,一个是值,一个是设置cookie保存时间,单位:天 function setcookie(name,value,days){ var days=arguments[2]?arguments[2]:30; //此 cookie 将被保存 30 天 var exp=new date(); //new date("december 31, 9998"); exp.settime(exp.gettime() + days*86400000); document.cookie=name + "="+ escape (value) + ";expires=" + exp.togmtstring(); } //取cookies函数 function getcookie(name){ var arr=document.cookie.match(new regexp("(^| )"+name+"=([^;]*)(;|$)")); if(arr!=null){ return unescape(arr[2]); } return null; } //删除cookie函数 function delcookie(name){ var exp = new date(); exp.settime(exp.gettime() - 1); var cval=getcookie(name); if(cval!=null){ document.cookie= name + "="+cval+";expires="+exp.togmtstring(); } }
其它类似信息

推荐信息