js中利用cookie實(shí)現(xiàn)記住密碼功能
在登錄界面添加記住密碼功能,我首先想到的是在java后臺(tái)中調(diào)用cookie存放賬號(hào)密碼,大致如下:
HttpServletRequest request HttpServletResponse response Cookie username = new Cookie("username ","cookievalue"); Cookie password = new Cookie("password ","cookievalue"); response.addCookie(username ); response.addCookie(password );
但是為安全起見,我們?cè)诤笈_(tái)獲取的密碼大多是在js中通過MD5加密后的密文,如果將密文放到cookie中,在js中獲取到也沒有作用;
然后考慮在js中存取cookie,代碼如下:
//設(shè)置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)三個(gè)參數(shù)分別是存放的cookie名字、cookie值、cookie有效天數(shù)
由于cookie中不能包含等號(hào)、空格、分號(hào)等特殊字符,我在設(shè)置cookie時(shí)使用escape() 函數(shù)對(duì)字符串進(jìn)行編碼,獲取cookie時(shí)使用unescape()函數(shù)解碼。但是escape()函數(shù)不會(huì)對(duì) ASCII 字母和數(shù)字進(jìn)行編碼,所以存放到cookie中的賬號(hào)、密碼是以明文存放的,不安全。于是上網(wǎng)找了一個(gè)對(duì)字符串加密解密算法,該算法需要傳兩個(gè)參數(shù),一個(gè)需要加密的字符串,一個(gè)自定義加密密鑰passKey。設(shè)置cookie時(shí)使用encrypt(value, passkey)加密,讀取cookie時(shí)使用decrypt(value, passKey)解密,該算法附在本文最后。
存取cookie方法的調(diào)用:
1、定義checkbox
<input type="checkbox" id="rememberMe" checked="checked"/>記住密碼
2、判斷帳號(hào)密碼輸入無(wú)誤后調(diào)用
if($('#rememberMe').is(':checked')){ setCookie('customername', $('#username').val().trim(), 7) setCookie('customerpass', $('#password').val().trim(), 7) }
3、進(jìn)入登錄界面后,判斷cookie中是否有帳號(hào)密碼,如果有就自動(dòng)填充
$(function(){ //獲取cookie var cusername = getCookie('customername'); var cpassword = getCookie('customerpass'); if(cusername != "" && cpassword != ""){ $("#username").val(cusername); $("#password").val(cpassword); } }
最后附上字符串加密解密算法
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
js模式化窗口問題![window.dialogArguments]
這篇文章主要介紹了js模式化窗口問題![window.dialogArguments],需要的朋友可以參考下2016-10-10使用JavaScript為一張圖片設(shè)置備選路徑的方法
在做網(wǎng)頁(yè)開發(fā)的時(shí)候,有時(shí)候希望給圖片設(shè)置一個(gè)備選路徑,即,當(dāng)src屬性對(duì)應(yīng)的主路徑加載失敗的時(shí)候,圖片可以馬上切換到備選路徑,怎么實(shí)現(xiàn)呢?下面通過本文給大家分享JavaScript為一張圖片設(shè)置備選路徑的方法,一起看看吧2017-01-01javascript cookies 設(shè)置、讀取、刪除實(shí)例代碼
javascript cookies 存、取、刪除實(shí)例,也是不錯(cuò)的文章,跟我們整理的有些補(bǔ)充。2010-04-04限制文本框只能輸入數(shù)字||只能是數(shù)字和小數(shù)點(diǎn)||只能是整數(shù)和浮點(diǎn)數(shù)
這篇文章主要介紹了限制文本框只能輸入數(shù)字||只能是數(shù)字和小數(shù)點(diǎn)||只能是整數(shù)和浮點(diǎn)數(shù)的實(shí)例代碼,非常不錯(cuò),也比較實(shí)用,需要的小伙伴一起看下吧2016-05-05