把用户名和密码保存到 cookie里,…

xiaoxiao2021-02-28  77

因为我们用的是spring security框架,所以我误认为是spring security remember me 功能。 就在配置文件里简单配置了一下,就实现了这个功能。 测试的时候才发现,不是要这种效果。是真的要字面上的意思。 也就是说。记住了密码后。在下次登录的时候是这样的效果: 于是我就在网上搜索 刚开始一种是全用js实现的 "text/javascript">       $(document).ready(function() {               var name = getCookie("username");               //$("#username")[0].value=name;                $("#username").val(name);                                $("#sub").click(function() {                   if ($("#remember").attr("checked") == true) {                       //获得用户名                        var username = $("#username").val();                       //设置cookie                       setCookie("username", username);                   } else {                       //删除cookie                       delCookie("username")                    }               })               function setCookie(name, value) {                   var Days = 60; //cookie 将被保存两个月                    var exp = new Date(); //获得当前时间                    exp.setTime(exp.getTime() + Days * 24 * 60 * 60 * 1000); //换成毫秒                   document.cookie = name + "=" + escape(value) + ";expires=" + exp.toGMTString();               }               function getCookie(name) {                   //取出cookie                    var strCookie = document.cookie;                   //cookie的保存格式是 分号加空格 "; "                   var arrCookie = strCookie.split("; ");                   for ( var i = 0; i < arrCookie.length; i++) {                       var arr = arrCookie[i].split("=");                       if (arr[0] == "username") {                           return arr[1];                       }                   }                   return "";               }               function delCookie(name) {                   var exp = new Date(); //当前时间                    exp.setTime(exp.getTime() - 1); //删除cookie 只需将cookie设置为过去的时间                     var cval = getCookie(name);                   if (cval != null)                       document.cookie = name + "=" + cval + ";expires="+ exp.toGMTString();               }           })    可是这个出现了一个问题。确实可以保存,和取出。我弹出来了,值没有任何问题。 当我需要在窗体加载的时候把上次存到cookie的值绑定到文本框是,绑定不了。用的是: document.getElementByIdx_x("username")value=xxx; 不知道是不是框架问题,这样中是绑定不了。就算我写死的也没用。 最后只能换种方法了。 于是又找了另外一种办法: (先在控制层保存cookie值) //记住密码操作                       Cookie[] cookies=request.getCookies();                       if(cookies!=null){                           for(int i=0;i                                 if(cookies[i].getName().equals("isTrue")){                                        String name=cookies[i].getValue();                                       if(("true").equals(name)){                                             Cookie user = new Cookie("user",userDetails.getUsername()+"-"+userDetails.getPassword());                                                 response.addCookie(user);                                       }else{                                             Cookie user = new Cookie("user","null");//这里试了很多种方式,我的就只有这种在取值的时候不报错。                                                 response.addCookie(user);                                       }                                 }                           }                     } (再在页面js中判断是否记住密码,传入控制层处理) function rememberPassword(){               var checked=document.getElementByIdx_x("rememberme");               if(checked.checked==true){                     document.cookie="isTrue=true";               }else{                     document.cookie="isTrue=false";               }         } (最后用java代码在页面取出cookie值) < %       Cookie[] cookies=request.getCookies();       if(cookies!=null){             for(int i=0;i                   if(cookies[i].getName().equals("user")){                          if(!"null".equals(cookies[i].getValue())){                               String name=cookies[i].getValue().split("-")[0];                               String passward=cookies[i].getValue().split("-")[1];                               request.setAttribute("name",name);                               request.setAttribute("pass",passward);                         }                   }             }       }   % > (绑死的绑到文本框就ok啦) < form action="j_spring_security_check" method="POST" οnsubmit="return rememberPassword();" >     < input type="text" name="j_username" id="username"  value="${name}" / >     < input type="password" name="j_password" id="password"  value="${name}" / >     < input type="checkbox" class="noborder" id="rememberme" >     < label for="rememberme" > 记住密码 < / label >     < input type="submit" name="submit" value=" 登 录 " / > < / form >                                                      
转载请注明原文地址: https://www.6miu.com/read-34065.html

最新回复(0)