最近弄了一下关于记住密码、自动登录的东西,这里记录一下主要的代码,以备不时之需。页面布局和一些次要的代码就不贴了,直接要主要的。
1、点击“记住密码”、“自动登录”复选框时触发的事件:
/** *点击“记住密码”复选框时触发事件 */ function rememberPwd(obj){ var isChecked = $(obj)[0].checked; //判断“记住密码”是否选中,若是选中,此时不需要操作“自动登录”。若是没选中,且“自动登录”勾选,那么需要撤销“自动登录” if(!isChecked){//说明没选中 if($("#autoLogin")[0].checked){//"自动登录"也选中了 $("#autoLogin")[0].checked=false;//取消自动登录 } } } /** * 点击“自动登录”复选框触发事件 */ function autoLogin(obj){ var isChecked = $(obj)[0].checked; //若是勾选“自动登录”,那么必然要勾选“记住密码”,若取消“自动登录”,那么“记住密码”不需要操作 if(isChecked){//被选中了,那么“记住密码”框需要选中 $("#rememberPwd")[0].checked=true;//启动记住密码 } } /*通过AJAX提交时带过去的参数信息: {"userName":name,"password":pwd,"flag":1,"rememberPwd":rememberPwd," autoLogin":autoLogin,"time":new Date().getTime()} */
2、点击“登录”按钮校验成功之后,在java代码中使用cookie记住“记住密码”、“自动登录”标注的状态(因为系统一打开就要显示“最后一次登录的用户”信息,所以加了一个“是否为最后一次登录”的标记):
..... String cookieValue=""; if(rememberPwd==1){ String md5Pwd=this.getPassword(); if(md5Pwd!=null && md5Pwd.length()<13){//没有加密的 md5Pwd=Md5.getPWD(this.getPassword());//加密 } cookieValue="1,"+md5Pwd+","+rememberPwd+","+autoLogin+","+userinfo.getUsername();//1表示当前用户是最后一次登录的 }else{ cookieValue="1,"+","+rememberPwd+","+autoLogin+","+userinfo.getUsername(); } cookieValue=URLEncoder.encode(cookieValue,"UTF-8");//处理中文乱码的问题 //当系统中存在当前cookie,再次new时会自动覆盖客户端的cookie。若没有则新建。 //这样子可以保证cookie的有效期(若连续登录,Cookie的有效期永远为30天,若30天没有登录,则cookie自动过期) Cookie cookie = new Cookie(this.getUserName(),cookieValue);//将密码信息、“记住密码”、“自动登录”的状态添加到cookie中 cookie.setMaxAge(Integer.parseInt(WebAppConfig.app("cookidMaxInactiveInterval")));//设置生命周期:目前设置的时间为一个月 response.addCookie(cookie);//添加到response中使之生效 //将其他cookie标记为非最后一次登录 Cookie[] cookies =request.getCookies();//获取所有的cookie for(Cookie c:cookies){ if(!c.getName().equalsIgnoreCase("JSESSIONID") && c.getName().compareTo(this.getUserName())!=0){//说明是其他用户 String value=c.getValue();//获取当前cookie的value值 value = URLDecoder.decode(value,"UTF-8"); String[] info=value.split(",");//截取每段数据 if(info.length>3){ String cookieVal = "0,"+info[1]+","+info[2]+","+info[3]+","+info[4];//拼接cookie中的状态 cookieVal = URLEncoder.encode(cookieVal,"UTF-8"); c.setValue(cookieVal);//修改cookie的value值 response.addCookie(c);//添加到response中使之生效 } } }
3、注销时使session失效,修改自动登录的状态,即登录时标记为“自动登录”点击注销时,将cookie中自动登录的标记修改为非自动登录:
Object userInfo = ServletActionContext.getRequest().getSession().getAttribute("userInfo"); if (userInfo!=null){ SUser user = (SUser)userInfo; //1、找到当前Cookie修改自动登录状态 Cookie[] cookies =request.getCookies();//获取所有的cookie for(Cookie c:cookies){ if(c.getName().compareTo(user.getAccount())==0){//说明是当前用户 String value=c.getValue();//获取当前cookie的value值 value = URLDecoder.decode(value,"UTF-8"); String[] info=value.split(",");//截取每段数据 if(info.length>3){ String cookieVal = "1,"+info[1]+","+info[2]+",0,"+info[4];//拼接cookie中的状态 cookieVal = URLEncoder.encode(cookieVal,"UTF-8"); c.setValue(cookieVal);//修改cookie的value值 c.setMaxAge(Integer.parseInt(WebAppConfig.app("cookidMaxInactiveInterval")));//设置生命周期:目前设置的时间为一个月 response.addCookie(c);//添加到response中使之生效 break;//其他的不循环 } } } //2、注销当前session ServletActionContext.getRequest().getSession().invalidate(); }else{ throw new Exception("获取用户信息失败:userInfo=null"); }
4、打开系统时从cookie中获取标记信息进行登录或只是在“用户名”显示区显示最后一次登录该系统的用户名称:
//自动登录 var cookie = getLastCookieInfo();//获取登录信息 if(cookie!=null && cookie!='undefined' && cookie!=''){ autoLogin(cookie[0],cookie[1]);//自动登录 } //获取最后一次登录该系统的用户名称进行显示 var cookie = getLastCookieInfo(); if(cookie!=null && cookie!='undefined' && cookie!=''){ var name=cookie[1].split(",")[4]; $("#lastLoginUser").text(name);//显示用户名 $("#lastLoginAccount").val(cookie[0]);//保存账号 } /** * 从cookie中获取最后一次登录的用户信息 */ function getLastCookieInfo(){ var array = document.cookie.split(";"); if(array.length>0){ //取最后一次登录的用户信息 for(var i=0;i<array.length;i++){ var a = decodeURI(array[i]);//解码 a=unescape(a);//编码 var arr = a.replace(/"/g,"");//去掉双引号 var cookie = arr.split("="); if(cookie.length>0){ var sign = cookie[1].split(",")[0];//逗号分开的第一个数据是”是否为最后登录用户“的标记 if(sign=="1"){ return [cookie[0],cookie[1]]; break;//结束循环 } } } } } /** * 根据Cookie中的值调用AJAX进行登录 */ function autoLogin(name,other){ if(other!=null && other!=""){ //0-是否为最后登录 1-密码 2-记住密码标记 3-自动登录标记 var val = other.split(","); if(val.length>0 && val[3]=="1"){//自动登录 $.ajax({ url :"login!userLoginOrQuit.action", async :false,//同步 type :"post", dataType :"json", data : {"userName":name,"password":val[1],"flag":1,"rememberPwd":val[2],"autoLogin":val[3],"time":new Date().getTime()}, timeout :4000, error : function(C) { alert(C.toString()); }, success : function(C) { } }); } } }
5、打开登录框进行登录时,自动获取账号和密码信息进行加载:
function login(){ ..... //获取账号 var account = $("#lastLoginAccount").val(); if(!isempty(account)){ account = jQuery.trim(account);//去除左右空格 $("#userName").val(account);//用户名(账号) //根据账户获取密码、记住密码、自动登录信息 var cookieValue = getPwdFromAccount(account);//调用getPwdFromAccount()方法获取基本信息 if(!isempty(cookieValue)){//不为空 //0-是否为最后一次登录用户 1-密码 2-记住密码标记 3-自动登录标记4-用户名(非账户) var pwdArr = cookieValue.split(","); if(pwdArr.length>0 && !isempty(pwdArr[1])){//密码不为空 //密码框赋值:通过MD5加密之后的值 $("#password").val(pwdArr[1]); //记住密码 $("#rememberPwd")[0].checked=true;//勾选记住密码 } } } $("#userName").focus();//用户名文本框聚焦 } /** * 根据账户获取密码、记住密码、自动登录信息 * */ function getPwdFromAccount(account){ var array = document.cookie.split(";"); if(array.length>0){ //取最后一次登录的用户信息 for(var i=0;i<array.length;i++){ var a = decodeURI(array[i]);//解码 a=unescape(a);//编码 var arr = a.replace(/"/g,"");//去掉双引号 var cookie = arr.split("="); if(cookie.length>0){ var cookieKey = jQuery.trim(cookie[0]);//账户 if(cookieKey==account){ return cookie[1];//把基本信息传回去 } } } } }
6、非自动登录状态下,输入用户名之后,按Tab键或Enter键,自动切换到“密码框”且自动从Cookie中获取密码信息:
/* 文本框输入用户名之后,按TAB键或Enter键,自动切换到“密码框”: onkeydown="if(event.keyCode==9 || event.keyCode==13){$('#password').focus();return false;}"//9:tab键 13:回车键 */ /** * 根据用户名,从cookie中获取相应信息自动补充 * */ function getPwd(){ var username = $("#userName").val(); if(!isempty(username)){//不为空 username = jQuery.trim(username);//去除左右空格 //根据账户获取密码、记住密码、自动登录信息 var cookieValue = getPwdFromAccount(username); if(!isempty(cookieValue)){//不为空 //0-是否为最后一次登录用户 1-密码 2-记住密码标记 3-自动登录标记4-用户名(非账户) var pwdArr = cookieValue.split(","); if(pwdArr.length>0 && !isempty(pwdArr[1])){//密码不为空 //密码框赋值 $("#password").val(pwdArr[1]); //记住密码 $("#rememberPwd")[0].checked=true;//勾选记住密码 } }else{ $("#password").val('');//清空密码框 $("#rememberPwd")[0].checked=false;//勾选记住密码 } }else{ $("#loginError").empty().append("用户名不能为空"); } }
7、公用方法isempty,用来当前值、当前变量、当前对象等是否为空:
/** *验证js变量的值是否为空, * true-不存在 * false-存在 * */ function isempty(v){ switch (typeof v){ case 'undefined' : return true; case 'string' : if(jQuery.trim(v).length == 0) return true; break; case 'boolean' : if(!v) return true; break; case 'number' : if(0 === v) return true; break; case 'object' : if(null === v) return true; if(undefined !== v.length && v.length==0) return true; for(var k in v){return false;} return true; break; } return false; }
相关推荐
本主题将详细讲解如何使用Java进行Cookie的读写操作,以及如何利用Cookie实现记住密码和自动登录功能。 1. **Cookie基本概念** Cookie是由服务器发送到用户浏览器并存储在本地的一小块数据,当用户再次请求同一...
在这个实例中,我们将深入探讨如何利用这些技术实现记住密码、自动登录、防止表单重复提交以及记录登录次数的功能。 首先,让我们从"记住密码"功能开始。在用户登录时,如果用户勾选了“记住我”的选项,系统会将...
在网页应用中,"Cookie记住用户名密码"是一个常见的功能,它允许用户在访问网站时选择保存他们的登录信息,以便下次访问时自动填充,提供便捷的用户体验。这个功能主要依赖于JavaScript和Cookie技术来实现,无需复杂...
总之,ASP.NET的"记住密码"和"自动登录"功能是通过Forms Authentication机制实现的,通过创建和管理加密的身份验证cookie来保持用户的登录状态。理解这一机制并正确实现这两个功能,能显著提升网站的用户体验。在...
综上所述,“Android记住密码和自动登录实现”主要是通过SharedPreferences存储用户登录凭证,以及使用CookieManager处理服务器返回的Cookie来实现。在实际应用中,还需要考虑安全性、隐私政策以及不同网络环境下的...
3. **简化登录过程**:用户选择“记住密码”后,Cookie存储了加密后的用户名和密码,下次访问时可直接自动登录。 4. **广告精准投放**:广告商可以通过Cookie追踪用户浏览历史,展示更具针对性的广告。 **三、...
总之,这个项目旨在教授如何利用Cookie在Java Web环境中实现记住用户名密码的功能,同时也涉及了IntelliJ IDEA和Tomcat的使用,以及Web开发中的基本安全实践。通过学习和实践这样的项目,开发者可以更深入地理解Web...
标题中的“cookie记住账号密码”指的是在Web应用中,如何利用Cookie技术来实现用户登录状态的持久化,以便用户在下次访问网站时无需再次输入用户名和密码。这涉及到Web开发中的基本概念,主要包括Cookie的工作原理、...
在网页开发中,"通过cookie记住密码"是一个常见的功能,它允许用户在访问网站时无需每次都手动输入登录凭据。这个功能的实现涉及到HTML、JavaScript(JS)以及服务器端的技术,如HTTP Cookie。下面我们将详细探讨这...
在网页开发中,用户登录体验的一个重要环节是“记住密码”功能。这个功能允许用户在一次登录后,下次访问同一网站时自动填充用户名和密码,从而简化登录过程。本示例源码着重讲解如何利用HTML配合Cookie技术实现这一...
在C#编程中,"记住密码功能"是一个常见的用户交互特性,它允许用户在登录时选择保存其凭据,以便在未来的会话中自动填充,实现免密登录。这一功能提高了用户体验,但也需要谨慎处理,以确保安全性。下面将详细讨论...
为了提高用户体验,还可以在登录页面中预先填充上一次的账号,但不自动填充密码,除非用户明确选择“记住密码”。 通过以上步骤,Java Web应用就可以实现记住用户账号和密码的功能,同时兼顾安全性。在实际项目中...
综上所述,"jsp,自动登录,记住密码"是通过JSP和Cookie技术实现的一种用户体验优化,但同时也需要考虑到安全性和隐私保护。在设计和实现这样的功能时,开发者需要平衡便捷性与安全性,确保系统的可靠性和用户的数据...
2. **设置Cookie**:用户登录时,通过`SetPwdAndChk`函数判断是否选中了“记住密码”选项。如果选中,则将用户名和密码以cookie形式保存;如果没有选中,则通过`ResetCookie`函数清除之前的cookie信息。 3. **获取...
JavaScript(简称JS)是一种轻量级的脚本语言,常用于...综上所述,JavaScript通过操作Cookie可以实现“记住密码”功能,但必须注意安全问题,如加密存储、使用HTTPS等。此外,理解Cookie的限制和使用场景也至关重要。
本文将详细讲解如何使用JavaScript(JS)来设置和读取cookie,从而实现登录时记住密码的功能。 首先,理解cookie的基本概念。Cookie是由服务器端生成,发送到客户端(浏览器),并存储在本地的一种小数据片段。它...
在Web开发中,"jsp+servlet+Cookie实现...总之,通过JSP、Servlet和Cookie的组合,开发者可以创建一个具备记住密码功能的登录系统,提高用户的使用体验。但在实现过程中,应始终关注安全性,以保护用户的数据不被滥用。
在IT行业中,"记住密码"是一项常见的功能,它允许用户在登录某个应用或网站时保存他们的凭证,以便在下次访问时自动填充,提高用户体验。这个功能通常涉及到浏览器存储、加密安全以及用户隐私等方面的知识。 首先,...
- 当服务器检测到有效Cookie时,它会尝试根据存储的用户名和密码自动登录。 - 如果验证通过,用户可以直接进入网站而无需再次输入凭证。 #### 安全性考虑 虽然使用`Session`和`Cookie`实现自动登录可以极大地...
如果用户选择了“记住密码”选项,则可以额外设置一个Cookie来存储经过加密处理的密码。例如: ```java if (ParamUtils.getBooleanParameter(request, "savePassword")) { // 设置密码相关的Cookie cookie = ...