Cookie实现记住密码功能
前端代码
1 <div class="custom-control custom-checkbox " style="float: right;"> 2 <input type="checkbox" class="custom-control-input" name="remFlag" id="remFlag" onclick="remember();" > 3 <label class="custom-control-label" for="remFlag">记住密码 </label> 4 </div>
前端JS
1 <script language="javascript"> 2 window.onload = function(){ rememberPass();} 3 4 function rememberPass() { 5 var str = getCookie("loginInfo"); 6 str = str.substring(0,str.length); 7 var username = str.split("+")[0]; 8 var password = str.split("+")[1]; 9 10 //自动填充用户名和密码 11 $("#login-username").val(username); 12 $("#login-password").val(password); 13 }; 14 15 //获取cookie 16 function getCookie(cname) { 17 var name = cname + "="; 18 var ca = document.cookie.split(';'); 19 for(var i=0; i<ca.length; i++) { 20 var c = ca[i]; 21 while (c.charAt(0)==' ') c = c.substring(1); 22 if (c.indexOf(name) != -1) return c.substring(name.length, c.length); 23 } 24 return ""; 25 } 26 27 //记住密码功能 28 function remember(){ 29 var remFlag = $("input[type='checkbox']").is(':checked'); 30 if(remFlag==true){ //如果选中设置remFlag为1 31 //cookie存用户名和密码,回显的是真实的用户名和密码,存在安全问题. 32 var conFlag = confirm("记录密码功能不宜在公共场所(如网吧等)使用,以防密码泄露.您确定要使用此功能吗?"); 33 if(conFlag){ //确认标志 34 $("#remFlag").val("1"); 35 }else{ 36 $("input[type='checkbox']").removeAttr('checked'); 37 $("#remFlag").val(""); 38 } 39 }else{ //如果没选中设置remFlag为"" 40 $("#remFlag").val(""); 41 } 42 } 43 </script>
后端代码
1 String nameCookie = userName; //用户名 2 String passCookie = passWord;//密码 3 //记住用户名、密码功能(注意:cookie存放密码会存在安全隐患) 4 String remFlag = req.getParameter("remFlag"); 5 if ("1".equals(remFlag)) { //"1"表示用户勾选记住密码 6 System.out.println("remFlag="+remFlag); 7 String loginInfo = nameCookie + "+" + passCookie; 8 Cookie userCookie = new Cookie("loginInfo", loginInfo); 9 userCookie.setMaxAge(30*24*60*60); //存活期为一个月 30*24*60*60 10 userCookie.setPath("/"); 11 resp.addCookie(userCookie); 12 }
原创文章,转载请说明出处,谢谢合作
【推荐】中国电信天翼云云端翼购节,2核2G云服务器一口价38元/年
【推荐】博客园携手 AI 驱动开发工具商 Chat2DB 推出联合终身会员
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 时间轮在 Netty , Kafka 中的设计与实现
· MySQL 优化利器 SHOW PROFILE 的实现原理
· 在.NET Core中使用异步多线程高效率的处理大量数据
· 聊一聊 C#前台线程 如何阻塞程序退出
· 几种数据库优化技巧
· 跟着 8.6k Star 的开源数据库,搞 RAG!
· .NET 9 中的 多级缓存 HybridCache
· 夜莺 v8 第一个版本来了,开始做有意思的功能了
· .NET 9 增强 OpenAPI 规范,不再内置swagger
· 推荐一个C#轻量级矢量图形库